AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-27515

larsks's questions

Martin Hope
larsks
Asked: 2025-03-20 03:36:05 +0800 CST

Bloco condicional dentro de um bloco condicional no Terraform

  • 5

Estou usando o Terraform para gerenciar uma organização do Github. Temos um módulo padrão "repositório comum" que usamos para garantir que nossos repositórios compartilhem uma configuração comum. Gostaria de adicionar suporte para configurar páginas do GitHub, o que requer suporte para o pageselemento , que se parece com isso:

  pages {
    build_type = "legacy"
    cname = "example.com"
    source {
      branch = "master"
      path   = "/docs"
    }
  }

Tudo é opcional. Em particular, sourceé necessário somente se build_type == "legacy" || build_type == null, e o bloco inteiro pagespode ser omitido. Não consegui descobrir como fazer sourcecondicional, então acabei dividindo isso em dois dynamicblocos assim:

  # There are two `dynamic "pages"` blocks here to account for the fact that `source` is only required
  # if `build_type` is "legacy". The `for_each` at the top of each block will only enable the block when
  # the necessary conditions are met.
  dynamic "pages" {

    # enable this block if `pages` is not null and `build_type` is "legacy" (or null)
    for_each = var.pages == null ? [] : var.pages.build_type == "legacy" || var.pages.build_type == null ? ["enabled"] : []

    content {
      source {
        branch = var.pages.source.branch
        path   = var.pages.source.path
      }

      cname      = var.pages.cname
      build_type = var.pages.build_type
    }
  }

  dynamic "pages" {

    # enable this block if `pages` is not null and `build_type` is "workflow"
    for_each = var.pages == null ? [] : var.pages.build_type == "workflow" ? ["enabled"] : []

    content {
      cname      = var.pages.cname
      build_type = var.pages.build_type
    }
  }

Onde eu defini a pagesvariável no módulo assim:

variable "pages" {
  description = "Configuration for github pages"
  type = object({
    source = optional(object({
      branch = string
      path   = string
    }))
    build_type = optional(string, "legacy")
    cname      = optional(string)
  })
  default = null
}

Existe uma maneira melhor de abordar isso?

terraform
  • 1 respostas
  • 20 Views
Martin Hope
larsks
Asked: 2022-10-01 08:27:31 +0800 CST

Por que o argocd continua ressincronizando meu trabalho?

  • 1

Estou implantando um aplicativo usando ArgoCD. Os manifestos de implantação incluem um trabalho que executa uma inicialização única para o aplicativo. O recurso Job se parece com isso:

apiVersion: batch/v1
kind: Job
metadata:
  labels:
    app.kubernetes.io/instance: house
    app.kubernetes.io/name: step-certificates
  name: create-acme-provisioner
  namespace: step-certificates
spec:
  backoffLimit: 100
  template:
    metadata:
      labels:
        app.kubernetes.io/instance: house
        app.kubernetes.io/name: step-certificates
    spec:
      containers:
      - command:
        - /bin/bash
        - -c
        - |
          while ! step ca health; do
            echo "waiting for ca"
            sleep 1
          done

          if ! step ca provisioner list | grep -q '"name": "acme"'; then
            step ca provisioner add acme --type ACME \
              --admin-subject step \
              --password-file /home/step/secrets/passwords/password \
              --admin-provisioner "Admin JWK"
          fi
        image: cr.step.sm/smallstep/step-ca:0.22.1
        name: create-acme-provisioner
        volumeMounts:
        - mountPath: /home/step/certs
          name: certs
          readOnly: true
        - mountPath: /home/step/config
          name: config
          readOnly: true
        - mountPath: /home/step/secrets
          name: secrets
          readOnly: true
        - mountPath: /home/step/secrets/passwords
          name: ca-password
          readOnly: true
      restartPolicy: Never
      securityContext:
        fsGroup: 1000
        runAsGroup: 1000
        runAsNonRoot: true
        runAsUser: 1000
      volumes:
      - configMap:
          name: step-certificates-certs
        name: certs
      - configMap:
          name: step-certificates-config
        name: config
      - name: secrets
        secret:
          secretName: step-certificates-secrets
      - name: ca-password
        secret:
          secretName: step-certificates-ca-password
  ttlSecondsAfterFinished: 60

Funciona como pretendido - falhará algumas vezes enquanto o aplicativo principal estiver sendo inicializado, mas depois será executado e tudo ficará ótimo:

$ kubectl get pods
NAME                            READY   STATUS      RESTARTS   AGE
create-acme-provisioner-7zhp2   0/1     Completed   0          12s
step-certificates-0             2/2     Running     0          54m
$ kubectl get jobs
NAME                      COMPLETIONS   DURATION   AGE
create-acme-provisioner   1/1           3s         20s

O problema é que o ArgoCD continua ressincronizando o recurso Job.a cada minuto, então o job é executado novamente... e novamente... e assim por diante. Os logs do pod argocd-application-controller são assim:

time="2022-09-30T16:20:42Z" level=info msg="Initialized new operation: {&SyncOperation{Revision:114442fcfb789190cfb9e7353a636369e7113c01,Prune:true,DryRun:false,SyncStrategy:nil,Resources:[]SyncOperationResource{SyncOperationResource{Group:batch,Kind:Job,Name:create-acme-provisioner,Namespace:,},},Source:nil,Manifests:[],SyncOptions:[CreateNamespace=true],} { true} [] {-1 &Backoff{Duration:30s,Factor:*2,MaxDuration:10m,}}}" application=step-certificates-infra
time="2022-09-30T16:20:42Z" level=info msg="Tasks (dry-run)" application=step-certificates-infra syncId=00259-Dpgma tasks="[Sync/0 resource batch/Job:step-certificates/create-acme-provisioner nil->obj (,,)]"
time="2022-09-30T16:20:42Z" level=info msg="Applying resource Job/create-acme-provisioner in cluster: https://10.96.0.1:443, namespace: step-certificates"
time="2022-09-30T16:20:42Z" level=info msg="Applying resource Job/create-acme-provisioner in cluster: https://10.96.0.1:443, namespace: step-certificates"
time="2022-09-30T16:20:42Z" level=info msg="Adding resource result, status: 'Synced', phase: 'Running', message: 'job.batch/create-acme-provisioner created'" application=step-certificates-infra kind=Job name=create-acme-provisioner namespace=step-certificates phase=Sync syncId=00259-Dpgma
time="2022-09-30T16:21:45Z" level=info msg="Initialized new operation: {&SyncOperation{Revision:114442fcfb789190cfb9e7353a636369e7113c01,Prune:true,DryRun:false,SyncStrategy:nil,Resources:[]SyncOperationResource{SyncOperationResource{Group:batch,Kind:Job,Name:create-acme-provisioner,Namespace:,},},Source:nil,Manifests:[],SyncOptions:[CreateNamespace=true],} { true} [] {-1 &Backoff{Duration:30s,Factor:*2,MaxDuration:10m,}}}" application=step-certificates-infra
time="2022-09-30T16:21:45Z" level=info msg="Tasks (dry-run)" application=step-certificates-infra syncId=00260-KsLXq tasks="[Sync/0 resource batch/Job:step-certificates/create-acme-provisioner nil->obj (,,)]"
time="2022-09-30T16:21:45Z" level=info msg="Applying resource Job/create-acme-provisioner in cluster: https://10.96.0.1:443, namespace: step-certificates"
time="2022-09-30T16:21:45Z" level=info msg="Applying resource Job/create-acme-provisioner in cluster: https://10.96.0.1:443, namespace: step-certificates"
time="2022-09-30T16:21:45Z" level=info msg="Adding resource result, status: 'Synced', phase: 'Running', message: 'job.batch/create-acme-provisioner created'" application=step-certificates-infra kind=Job name=create-acme-provisioner namespace=step-certificates phase=Sync syncId=00260-KsLXq
time="2022-09-30T16:22:49Z" level=info msg="Initialized new operation: {&SyncOperation{Revision:114442fcfb789190cfb9e7353a636369e7113c01,Prune:true,DryRun:false,SyncStrategy:nil,Resources:[]SyncOperationResource{SyncOperationResource{Group:batch,Kind:Job,Name:create-acme-provisioner,Namespace:,},},Source:nil,Manifests:[],SyncOptions:[CreateNamespace=true],} { true} [] {-1 &Backoff{Duration:30s,Factor:*2,MaxDuration:10m,}}}" application=step-certificates-infra
time="2022-09-30T16:22:49Z" level=info msg="Tasks (dry-run)" application=step-certificates-infra syncId=00261-itFqU tasks="[Sync/0 resource batch/Job:step-certificates/create-acme-provisioner nil->obj (,,)]"
time="2022-09-30T16:22:49Z" level=info msg="Applying resource Job/create-acme-provisioner in cluster: https://10.96.0.1:443, namespace: step-certificates"
time="2022-09-30T16:22:49Z" level=info msg="Applying resource Job/create-acme-provisioner in cluster: https://10.96.0.1:443, namespace: step-certificates"
time="2022-09-30T16:22:49Z" level=info msg="Adding resource result, status: 'Synced', phase: 'Running', message: 'job.batch/create-acme-provisioner created'" application=step-certificates-infra kind=Job name=create-acme-provisioner namespace=step-certificates phase=Sync syncId=00261-itFqU

Por que o ArgoCD está ressincronizando este recurso e como faço para que ele pare?

kubernetes
  • 1 respostas
  • 29 Views
Martin Hope
larsks
Asked: 2020-11-29 05:21:50 +0800 CST

Por que as VLANs não marcadas são configuradas separadamente da porta PVID?

  • 2

Depois de configurar incorretamente uma porta de switch ontem, estou curioso: em que situação você configuraria uma VLAN não marcada em uma porta de switch e não definiria o PVID para essa mesma vlan?

Em todos os switches com os quais trabalhei, esses dois valores são configurados separadamente (onde a marcação de VLAN é principalmente uma configuração de saída e PVID é uma configuração de entrada), mas parece que se eles não corresponderem, você terá uma configuração quebrada.

networking vlan switch
  • 1 respostas
  • 2598 Views
Martin Hope
larsks
Asked: 2020-10-13 07:45:42 +0800 CST

wireguard "endereço de destino necessário" ao tentar se comunicar de cliente para cliente em vez de cliente para servidor

  • 2

Eu tenho uma rede wireguard simples composta por um único "servidor" (o único dispositivo com um endereço IP roteável externamente) e dois clientes. A comunicação entre o servidor e os clientes parece funcionar muito bem: a partir do servidor, posso acessar os clientes usando seus endereços wireguard e posso acessar endereços "atrás" dos clientes. Da mesma forma, dos clientes eu posso acessar o endereço wireguard do servidor.

O que não funciona é a comunicação cliente a cliente. Se de um cliente eu tento para pingoutro cliente usando seu endereço IP wireguard, a pingfalha com:

From 192.168.64.10 icmp_seq=1 Destination Host Unreachable
ping: sendmsg: Destination address required

Além disso, essa pingtentativa não resulta em nenhum tráfego UDP entre o cliente e o servidor.

Eu incluí minha configuração wireguard abaixo.

Nós VPN

Em todos os nós:

  • net.ipv4.ip_forwardé1
  • Não há restrições na FORWARDmesa
  • Eu não estou usando wg-quickpara abrir a vpn. Estou usando um script de shell que está incluído na parte inferior deste post.

Servidor

# ip addr show wg0
39: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 192.168.64.1/24 scope global wg0
       valid_lft forever preferred_lft forever
# ip route show | grep wg0
10.0.0.0/8 dev wg0 scope link
192.168.1.0/24 dev wg0 scope link
192.168.11.0/24 dev wg0 scope link
192.168.13.0/24 dev wg0 scope link
192.168.64.0/24 dev wg0 proto kernel scope link src 192.168.64.1
[Interface]
PrivateKey = <secret key>
ListenPort = 50001

[Peer]
PublicKey = 1cML7...
AllowedIps = 192.168.1.0/24, 192.168.11.0/24, 192.168.13.0/24, 192.168.64.10/32
PersistentKeepalive = 30

[Peer]
PublicKey = mRjd9...
AllowedIps = 10.0.0.0/8, 192.168.64.11/32
PersistentKeepalive = 30

Cliente 1

# ip addr show wg0
33: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 192.168.64.10/24 scope global wg0
       valid_lft forever preferred_lft forever
# ip route | grep wg0
10.0.0.0/8 dev wg0 scope link
192.168.64.0/24 dev wg0 proto kernel scope link src 192.168.64.10
[Interface]
PrivateKey = <secret key>
ListenPort = 50001

[Peer]
PublicKey = 2VtQ/...
Endpoint = wg.example.com:50001
AllowedIps = 0.0.0.0/0, 192.168.64.1/32
PersistentKeepalive = 30

[Peer]
PublicKey = mRjd9...
AllowedIps = 10.0.0.0/8, 192.168.64.11/32
PersistentKeepalive = 30

Cliente 2

# ip addr show wg0
11: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 192.168.64.11/24 scope global wg0
       valid_lft forever preferred_lft forever
# ip route show | grep wg0
192.168.1.0/24 dev wg0 scope link
192.168.11.0/24 dev wg0 scope link
192.168.13.0/24 dev wg0 scope link
192.168.64.0/24 dev wg0 proto kernel scope link src 192.168.64.11
[Interface]
PrivateKey = <secret key>
ListenPort = 50001

[Peer]
PublicKey = 2VtQ/...
Endpoint = wg.example.com:50001
AllowedIps = 0.0.0.0/0, 192.168.64.1/32
PersistentKeepalive = 30

[Peer]
PublicKey = 1cML7...
AllowedIps = 192.168.1.0/24, 192.168.11.0/24, 192.168.13.0/24, 192.168.64.10/32
PersistentKeepalive = 30

Script de configuração de interface

A wg0interface nos nós é configurada com o seguinte script:

#!/bin/sh

dev=$1
addr=$2

ip link add $dev type wireguard
ip addr add $addr dev $dev

wg setconf $dev /etc/wireguard/$dev.conf

ip link set $dev  up
vpn firewall wireguard
  • 1 respostas
  • 10869 Views
Martin Hope
larsks
Asked: 2020-04-02 11:32:02 +0800 CST

Kibana e Logstash: Quando um campo não é um campo?

  • 0

Habilitei o grokfiltro em nossa configuração do logstash para analisar os logs do HAProxy usando os padrões %{HAPROXYHTTP}e . %{HAPROXYTCP}Isso parece funcionar muito bem e, visualizando os detalhes de qualquer entrada de log do haproxy, posso ver os vários campos extraídos (bytes_read, client_ip, client_port, termination_state, actconn, feconn, etc).

Mas na tela "Criar uma nova visualização" do Kibana, nenhum desses campos está disponível no pop-up "Campos" ao configurar o eixo Y.

O que preciso fazer para disponibilizar esses campos extraídos para visualizações?

elasticsearch kibana logstash
  • 2 respostas
  • 219 Views
Martin Hope
larsks
Asked: 2020-03-06 03:49:56 +0800 CST

Promethius, group_left e "on" vs "ignoring"

  • 1

Na edição #2204 , um dos desenvolvedores do Prometheus diz:

...em princípio você deveria estar favorecendo ignoringa onprodução de regras compartilháveis ​​genéricas...

Estou confuso como o uso de ignoringlevaria a regras mais genéricas. Por exemplo, considere uma situação em que temos uma métrica de "informações" para um dispositivo e várias estatísticas, como esta:

device_info{id="1", owner="coyote", project="acme"}
device_rx_bytes{id="1"}
device_tx_bytes{id="1"}
device_rx_errors{id="1"}
device_tx_errors{id="1"}

Se eu quiser obter a taxa de recebimento por projeto, precisaria correlacionar a device_rx_bytesmétrica com a device_infométrica correspondente. Para mim, isso cheira a uma junção SQL, e eu escreveria:

rate(device_rx_bytes[5m]) * on(id) group_left(project) device_info

Isso parece "genérico" no sentido de que apenas faz suposições sobre o rótulo usado para o agrupamento ( id) e o rótulo que queremos propagar para nossos resultados ( project). Se eu entendi o ignoringoperador corretamente, a expressão correspondente seria mais complexa porque eu precisaria listar todos os rótulos do lado direito que não existem no lado esquerdo. Algo como:

rate(device_rx_bytes[5m]) * ignoring(owner, project) group_left(project) device_info

Isso é correto? E se for, por que é ignoringpreferível on(não apenas na citação acima, mas também em várias documentações e exemplos)?

monitoring prometheus
  • 1 respostas
  • 5597 Views
Martin Hope
larsks
Asked: 2020-03-03 06:31:44 +0800 CST

As métricas do Prometheus têm algum tipo de vida útil de "frescura"?

  • 4

Estou raspando algumas métricas (tamanhos de volume de cinder openstack) a cada 15 minutos, e os resultados produzem um gráfico descontínuo, como este:

insira a descrição da imagem aqui

(Esse é o resultado da consulta simples cinder_volume_size_gb).

As métricas "existem" por cerca de cinco minutos, mas desaparecem até o próximo intervalo de raspagem. Quais definições de configuração influenciariam esse comportamento?

metrics prometheus openstack
  • 1 respostas
  • 1257 Views
Martin Hope
larsks
Asked: 2019-12-12 08:17:38 +0800 CST

Configurando DHCP com OVN

  • 2

Estou tentando configurar um ambiente semelhante ao descrito aqui no qual a OVN fornecerá serviço DHCP para redes lógicas.

Eu tenho um switch lógico chamado `net0 com duas portas:

[root@ovn0 ~]# ovn-nbctl show
[root@ovn0 ~]# ovn-nbctl show
switch 0507d649-0730-4fdc-95cd-943b25e613ab (net0
    port port2
        addresses: ["c0:ff:ee:00:00:12 10.0.0.12"]
    port port1
        addresses: ["c0:ff:ee:00:00:11 10.0.0.11"]

Essas portas estão vinculadas em dois chassis denominados ovn1e ovn2:

[root@ovn0 ~]# ovn-sbctl show
Chassis ovn0
    hostname: ovn0.virt
    Encap geneve
        ip: "192.168.122.80"
        options: {csum="true"}
Chassis ovn1
    hostname: ovn1.virt
    Encap geneve
        ip: "192.168.122.99"
        options: {csum="true"}
    Port_Binding port1
Chassis ovn2
    hostname: ovn2.virt
    Encap geneve
        ip: "192.168.122.109"
        options: {csum="true"}
    Port_Binding port2

On ovn1, port1faz parte do br-intswitch:

[root@ovn1 ~]# ovs-vsctl list-ports br-int
ovn-ovn0-0
ovn-ovn2-0
port1

E tem o apropriado iface-id:

[root@ovn1 ~]# ovs-vsctl  list interface port1 |egrep -v '\[]|{}'
_uuid               : 63101ec6-be8c-4df7-bdab-e43f8bc4f7f9
admin_state         : up
external_ids        : {iface-id="port1"}
ifindex             : 0
ingress_policing_burst: 0
ingress_policing_rate: 0
link_resets         : 1
link_state          : up
mac                 : "c0:ff:ee:00:00:11"
mac_in_use          : "c0:ff:ee:00:00:11"
mtu                 : 1500
name                : "port1"
ofport              : 2
statistics          : {collisions=0, rx_bytes=0, rx_crc_err=0, rx_dropped=0, rx_errors=0, rx_frame_err=0, rx_over_err=0, rx_packets=0, tx_bytes=3672, tx_dropped=0, tx_errors=0, tx_packets=20}
status              : {driver_name=openvswitch}
type                : internal

Eu configurei as opções do dhcp nessa porta:

[root@ovn0 ~]# ovn-nbctl lsp-get-dhcpv4-options port1
29f9e321-93d1-4974-8cd7-7f65ad376f51 (10.0.0.0/24)

Qual mapa para:

[root@ovn0 ~]# ovn-nbctl list dhcp_options
_uuid               : 29f9e321-93d1-4974-8cd7-7f65ad376f51
cidr                : "10.0.0.0/24"
external_ids        : {}
options             : {lease_time="3600", router="10.0.0.1", server_id="10.0.0.1"}

On ovn1, port1foi adicionado a um namespace de rede chamado vm1:

[root@ovn1 ~]# ip netns exec vm1 ip addr
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
6: port1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether c0:ff:ee:00:00:11 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::2c8b:65ff:fe00:4/64 scope link
       valid_lft forever preferred_lft forever

O endereço MAC corresponde ao endereço MAC configurado anteriormente no banco de dados da porta lógica.

Se eu executar um cliente dhcp no port1 nesse namespace de rede, ele nunca receberá uma resposta:

[root@ovn1 ~]# ip netns exec vm1 dhclient -d port1
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/port1/c0:ff:ee:00:00:11
Sending on   LPF/port1/c0:ff:ee:00:00:11
Sending on   Socket/fallback
DHCPDISCOVER on port1 to 255.255.255.255 port 67 interval 7 (xid=0x75a05a70)
DHCPDISCOVER on port1 to 255.255.255.255 port 67 interval 21 (xid=0x75a05a70)
.
.
.
No DHCPOFFERS received.

O que mais é necessário para que o OVN responda às solicitações DHCP nesta porta?

Atualização 1

ovn-tracesugere que uma solicitação dhcp seja transmitida para todas as interfaces:

[root@ovn0 ~]# ovn-trace net0 'inport=="port1" && eth.src==c0:ff:ee:00:00:11 && ip4.src==0.0.0.0 && eth.dst==ff:ff:ff:ff:ff:ff && ip4.dst==255.255.255.255 && udp.src==68 && udp.dst==67'
# udp,reg14=0x2,vlan_tci=0x0000,dl_src=c0:ff:ee:00:00:11,dl_dst=ff:ff:ff:ff:ff:ff,nw_src=0.0.0.0,nw_dst=255.255.255.255,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=68,tp_dst=67

ingress(dp="net0", inport="port1")
----------------------------------
 0. ls_in_port_sec_l2 (ovn-northd.c:4028): inport == "port1" && eth.src == {c0:ff:ee:00:00:11}, priority 50, uuid e155c87e
    next;
 1. ls_in_port_sec_ip (ovn-northd.c:3642): inport == "port1" && eth.src == c0:ff:ee:00:00:11 && ip4.src == 0.0.0.0 && ip4.dst == 255.255.255.255 && udp.src == 68 && udp.dst == 67, priority 90, uuid 5548c089
    next;
17. ls_in_l2_lkup (ovn-northd.c:5678): eth.mcast, priority 70, uuid 51b48b77
    outport = "_MC_flood";
    output;

multicast(dp="net0", mcgroup="_MC_flood")
-----------------------------------------

    egress(dp="net0", inport="port1", outport="net0-gw")
    ----------------------------------------------------
         9. ls_out_port_sec_l2 (ovn-northd.c:4115): eth.mcast, priority 100, uuid 7db51d27
            output;
            /* output to "net0-gw", type "" */

    egress(dp="net0", inport="port1", outport="port1")
    --------------------------------------------------
            /* omitting output because inport == outport && !flags.loopback */

    egress(dp="net0", inport="port1", outport="port2")
    --------------------------------------------------
         9. ls_out_port_sec_l2 (ovn-northd.c:4115): eth.mcast, priority 100, uuid 7db51d27
            output;
            /* output to "port2", type "" */
networking
  • 1 respostas
  • 490 Views
Martin Hope
larsks
Asked: 2015-01-20 06:03:22 +0800 CST

Como posso examinar os sinalizadores de montagem de "subárvore compartilhada" para uma montagem específica?

  • 5

No Linux, os sinalizadores de subárvore compartilhada controlam como um ponto de montagem é compartilhado com namespaces de montagem pai e filho . Esses sinalizadores incluem MS_SHARED, MS_PRIVATEe MS_SLAVE. Como alguém pode ver quais desses sinalizadores estão definidos em um determinado ponto de montagem?

Esses sinalizadores não aparecem na saída mountou em arquivos /proc/mounts.

linux
  • 1 respostas
  • 237 Views
Martin Hope
larsks
Asked: 2014-11-17 14:41:01 +0800 CST

Quais são os atributos exigidos pelo elemento `<componente>` nos arquivos unattend.xml do Windows?

  • 5

O <component>elemento em um unattend.xmlarquivo - usado para fornecer informações necessárias para instalações totalmente automatizadas do Windows - geralmente é apresentado com vários atributos, por exemplo:

<component 
  name="Microsoft-Windows-International-Core-WinPE"
  processorArchitecture="amd64"
  publicKeyToken="31bf3856ad364e35"
  language="neutral"
  versionScope="nonSxS">

<!-- ... -->

</component>

Embora namee processorArchitecturesejam bastante autoexplicativos e languagesugiram que talvez introduza configurações específicas de localidade, não consegui encontrar nenhuma documentação sobre nenhum desses atributos.

Em particular, o que são versionScopee publicKeyToken? No momento, eles parecem ser "constantes mágicas".

windows-server-2012
  • 1 respostas
  • 1703 Views
Martin Hope
larsks
Asked: 2014-11-15 09:36:58 +0800 CST

Instalação autônoma do Windows Server 2012 no KVM

  • 5

Estou tentando executar uma instalação autônoma do Windows Server 2012 em uma máquina virtual KVM, usando virt-install. O instalador está reclamando: "O Windows não pode ler a <ProductKey>configuração do arquivo de resposta autônomo" e não consegui descobrir como prosseguir além desse ponto.

Estou começando com o seguinte autounattend.xmlarquivo:

<unattend xmlns="urn:schemas-microsoft-com:unattend"
xmlns:ms="urn:schemas-microsoft-com:asm.v3"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
  <settings pass="windowsPE">
    <component name="Microsoft-Windows-Setup"
    publicKeyToken="31bf3856ad364e35" language="neutral"
    versionScope="nonSxS" processorArchitecture="x86">
      <UserData>
        <AcceptEula>true</AcceptEula>
        <ProductKey>
          <Key>XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</Key>
          <WillShowUI>OnError</WillShowUI>
        </ProductKey>
      </UserData>
      <ImageInstall>
        <OSImage>
          <WillShowUI>Never</WillShowUI>
          <InstallTo>
            <DiskID>0</DiskID>
            <PartitionID>1</PartitionID>
          </InstallTo>
          <InstallFrom>
            <MetaData>
              <Key>/IMAGE/Name</Key>
              <Value>Windows Longhorn SERVERSTANDARDCORE</Value>
            </MetaData>
          </InstallFrom>
        </OSImage>
      </ImageInstall>
    </component>
  </settings>
</unattend>

Estou transformando isso em uma imagem ISO usando mkisofs:

$ ls config/
autounattend.xml
$ mkisofs -o config.iso -J -r config

E então estou iniciando a instalação assim:

virt-install -n ws2012 -r 2048 -w network=default,model=virtio \
  --disk path=ws2012.qcow2,device=disk,bus=virtio \
  --cdrom en_windows_server_2012_r2_with_update_x64_dvd_4065220.iso \
  --disk path=virtio-win-0.1-81.iso,device=cdrom \
  --disk path=config.iso,device=cdrom \
  --os-type windows --os-variant win2k8

Olhando para x:\windows\panther\setupact.log, posso ver que o instalador encontra o arquivo autônomo:

2014-11-14 12:29:43, Info  [0x060114] IBS
Callback_Productkey_Validate_Unattend:User specified an unattend
xml file

A chave do produto especificada é válida (posso copiá-la e colá-la deste arquivo na caixa de diálogo da chave do produto e a instalação prosseguirá corretamente).

Você sabe como fazer essa instalação funcionar?

kvm-virtualization
  • 2 respostas
  • 4135 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve