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 / server / 问题

Perguntas[ansible](server)

Martin Hope
Suffren
Asked: 2025-04-09 17:49:16 +0800 CST

Plug-in de inventário dinâmico Ansible vmware.vmware.vms

  • 5

Quero criar um inventário dinâmico com o plugin vmware.vmware.vms ansible. Quero personalizar meu inventário para selecionar apenas hosts Linux.

Não entendo como o plugin está funcionando e a documentação do Ansible é pobre em exemplos e explicações ( https://docs.ansible.com/ansible/latest/collections/vmware/vmware/vms_inventory.html#ansible-collections-vmware-vmware-vms-inventory )

Com o código abaixo, o plugin está me retornando 3 grupos (linux, PoweredOn, PoweredOff). No grupo "linux" criado, todos os hosts do VMware são retornados (mesmo os baseados em Windows). E o plugin continua me retornando uma saída longa com valores indesejados, mesmo que eu diga para agrupar usando a propriedade "guest.guestFamily".

plugin: vmware.vmware.vms
hostname: "REDACTED"
username: "REDACTED"
password: "REDACTED"
validate_certs: false
properties: ["guest"]
groups:
  linux: guest.guestFamily

Meus objetivos são:

  • como posso usar o plugin para filtrar hosts específicos e adicioná-los a um grupo
  • como evitar a saída de grupos indesejados (como o grupo padrão PoweredOn e PoweredOff)
  • como posso gerar o retorno do plug-in para um formato ou arquivo .yaml/.ini utilizável (pronto para ser usado com um playbook)
ansible
  • 1 respostas
  • 20 Views
Martin Hope
Prade
Asked: 2025-04-02 09:04:06 +0800 CST

Loop Ansible enquanto com método Post

  • 7

Estou tentando rotacionar uma lista da linha de comando e passá-la para um método Post para o Servicenow usando o módulo Ansible URI. Estou muito perto, mas não consegui exatamente o que queria. Agradeceria se alguém pudesse me corrigir.

papel

  • adicionar_gerente
    • tarefas/main.yml
    • vars/ondemand_add.yml
  1. tarefas/main.yml
    - name: Submit API request to add managers
      uri:
        url: "{{ contacturl }}"
        headers: "{{ headers }}"
        user: "{{ key }}"
        password: "{{ secret }}"
        body: "{{ item }}"
        force_basic_auth: yes
        body_format: json
        method: POST
        status_code: 201
        validate_certs: false
      with_items: "{{ od_user }}"
      register: result
      changed_when: False
      failed_when: False
      ignore_errors: True
  1. vars/ondemand_add.yml
od_user:
  - cmdbRequest: "contactCreate"
    user: "{{ manager_id }}"
    servername: "{{ ansible_hostname }}"
    type: "Server Management"
    contactType: "Manager"

Meu comando de playbook é o seguinte

#ansible-playbook -i meuhost, -e '{"role": "add_manager", "manager_id ":['1234', '4567']}' -- top.yml

ansible
  • 1 respostas
  • 33 Views
Martin Hope
fccoelho
Asked: 2024-11-05 22:43:45 +0800 CST

Configuração YAML adequada para a função ansible ssh_security

  • 5

Estou criando um ansible rolke para configurar a segurança ssh em servidores, seguindo a documentação. Aqui está meu arquivo de configuração YAML:

---
- name: Enable SSH security
  hosts: webservers
  tasks:
      - name: Ensure SSH is installed
        apt:
          name: openssh-server
          state: present

      - name: Configure SSH to disable password authentication
        lineinfile:
          path: /etc/ssh/sshd_config
          regexp: '^#?PasswordAuthentication'
          line: 'PasswordAuthentication no'
        notify: Restart SSH

      - name: Ensure public key authentication is enabled
        lineinfile:
          path: /etc/ssh/sshd_config
          regexp: '^#?PubkeyAuthentication'
          line: 'PubkeyAuthentication yes'
        notify: Restart SSH

      - name: Disable root SSH access
        lineinfile:
          path: /etc/ssh/sshd_config
          regexp: '^#?PermitRootLogin'
          line: 'PermitRootLogin no'
        notify: Restart SSH

  handlers:
      - name: Restart SSH
        service:
          name: ssh
          state: restarted

Parece correto e bem formatado, porém quando executo o playbook, recebo este erro:

SSH password: 
BECOME password[defaults to SSH password]: 
ERROR! conflicting action statements: hosts, tasks

The error appears to be in '/<full path>/Hetzner/roles/ssh_security/tasks/main.yml': line 2, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

---
- name: Enable SSH security
  ^ here

O analisador yaml do Pycharm IDE não acusa esse erro. O que pode estar errado nessa configuração?

ansible
  • 1 respostas
  • 14 Views
Martin Hope
user25613212
Asked: 2024-09-30 17:59:21 +0800 CST

Ansible replace: regex/substituir várias linhas?

  • 5

No Ansible, gostaria de substituir isto:

pgsql:
  useCluster: false
  addr: 127.0.0.1:5432
  password: ""
email:
  to: [email protected]
  port: 465
  password: ""

substitua por isso:

pgsql:
  useCluster: false
  addr: 127.0.0.1:5432
  password: "2024xxx"
email:
  to: [email protected]
  port: 465
  password: ""

Como há duas variáveis ​​idênticas que não podem ser substituídas, eu uso esse método. Mas isso não pode ser alcançado. Como todos devem lidar com isso?

replace:
      path: "config.yaml"
      regexp: '(redis:[^<]*)password: ""'
      replace: '\1password: "2024xxx"'
ansible
  • 1 respostas
  • 47 Views
Martin Hope
Panduar
Asked: 2024-09-05 04:34:55 +0800 CST

Ansible global group_vars/all.yml tendo precedência sobre inventory group_vars/all.yml

  • 5

No Ansible 2.16.8 em um Mac (M1) executando Python 3.12.4 (via homebrew), estou tentando configurar um group_vars/all.yml global que pode ser substituído por inventory/x/group_vars/all.yml se necessário. No entanto, parece que o arquivo global está substituindo os valores específicos do inventário.

Dado o seguinte arquivo:

# group_vars/all.yml
level: global all
# inventory/x/group_vars/all.yml
level: inventory all
# inventory/x/group_vars/test.yml
level: inventory group

E correndo:

ansible all -i inventory/x -m debug -a "var=level" -o

Eu entendo:

test-host | SUCCESS => { "changed": false, "level": "inventory group" }
non-test-host | SUCCESS => { "changed": false, "level": "global all" }

Mas espero obter:

test-host | SUCCESS => { "changed": false, "level": "inventory group" }
non-test-host | SUCCESS => { "changed": false, "level": "inventory all" }
ansible
  • 1 respostas
  • 58 Views
Martin Hope
Martin Garbe
Asked: 2024-07-12 15:05:49 +0800 CST

Por que o ansible reavalia uma variável em cada acesso

  • 9

Preciso gerar algum ID exclusivo no ansible. A geração funciona, mas o acesso à variável resulta em algum comportamento "não esperado".

O manual é muito simples:

---
- hosts: localhost
  vars:
    - var1: "{{ 99999999 | random }}"
  tasks:
    - debug: msg="{{ var1 }}"
    - debug: msg="{{ var1 }}"
    - debug: msg="{{ var1 }}"

Eu esperava ter sempre o mesmo resultado, mas a realidade é diferente:

ansible-playbook -i localhost setup-env-test.yml
[WARNING]: Unable to parse .... as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************************************
ok: [localhost]

TASK [debug] *******************************************************************************************************************************
ok: [localhost] => {
    "msg": "23317042"
}

TASK [debug] *******************************************************************************************************************************
ok: [localhost] => {
    "msg": "23320954"
}

TASK [debug] *******************************************************************************************************************************
ok: [localhost] => {
    "msg": "96866238"
}

PLAY RECAP *********************************************************************************************************************************
localhost                  : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

Parece que a variável é reavaliada a cada acesso.

Sei que a reavaliação ocorre quando o contexto muda, por exemplo, quando se entra numa função, mas este não é o caso aqui. Também sei que ao usar set_fact esse comportamento muda e o conteúdo da variável não é avaliado novamente.

Alguém pode me dar uma dica de por que a reavaliação está ocorrendo? Seria bom encontrar a documentação ansible que explica isso.

ansible
  • 1 respostas
  • 241 Views
Martin Hope
Matt Wagner
Asked: 2024-07-04 04:09:13 +0800 CST

Ansible: Como mesclar uma lista e ditar em um novo ditado aninhado

  • 5

Estou tentando criar registros de pesquisa reversa (PTR) para ligação.

Eu tenho um arquivo CSV com campos IP e Hostname carregados em um dict (de read_csv), então acho que é uma lista de dictos:

ok: [localhost] => {
    "msg": [
        {
            "changed": false,
            "dict": {},
            "failed": false,
            "list": [
                {
                    "hostname": "host1",
                    "ip": "10.32.1.32"                                                            
                },
                {
                    "hostname": "host2",
                    "ip": "10.50.6.71"                                                            
                },
                {                                                                                     
                    "hostname": "host3",
                    "ip": "10.36.254.41"                                                          
                },
                {
                    "hostname": "host4",
                    "ip": "10.36.254.42"
                }
            ]
        },
    ]
}

E eu tenho uma lista de dois últimos octetos invertidos exclusivos derivados do ditado acima:

ok: [localhost] => {
    "msg": [
        [
            "32.10",
            "50.10",
            "36.10"
        ],
    ]
}

O que eu quero é um novo ditado parecido (a formatação pode não estar correta, por favor, perdoe):

{
   "32.10": 
          {
              "hostname": "host1",
              "ip": "10.32.1.32"                                                            
          },
   "50.10":
          {
              "hostname": "host2",
              "ip": "10.50.6.71"                                                            
          },
   "36.10":
          {                                                                                     
              "hostname": "host3",
              "ip": "10.36.254.41"                                                          
          },
          {
              "hostname": "host4",
              "ip": "10.36.254.42"
          }
}

O novo ditado "super" deve ter apenas as entradas IP + Nome do host para aquela rede correspondente (por exemplo, todas as entradas 10.36.xx devem estar em "36.10").

A partir desse novo ditado, eu deveria ser capaz de percorrê-lo em um modelo para gerar os registros PTR.

Estou perplexo sobre como mesclar essas duas estruturas de dados. :-/

Obrigado!

ansible
  • 1 respostas
  • 12 Views
Martin Hope
Appleoddity
Asked: 2024-05-28 23:20:54 +0800 CST

Por que esse código gera um aviso de descontinuação do Ansible?

  • 5
# Build a list of Adtran AP mac addresses found on directly connected switch ports
- name: PARSE AND FILTER MAC ADDRESS-TABLE
  ansible.builtin.set_fact:
    macs: "{{ macs + [item] }}"
  loop: "{{ macs_raw.stdout[0] | ansible.netcommon.parse_cli_textfsm('templates/cisco_ios_show_mac-address-table.textfsm') }}"
  when:
    - item.DESTINATION_PORT[0] not in neighbors.keys()   # Ignore macs found on neighboring switches
    - item.DESTINATION_ADDRESS is search('^0019\.92.*$')   # Ignore macs that aren't Adtran APs

Recebo o seguinte aviso de descontinuação:

[DEPRECATION WARNING]: Use 'ansible.utils.hwaddr' module instead. This feature will be removed from ansible.netcommon in a release after 2024-01-01. Deprecation warnings can be disabled by
 setting deprecation_warnings=False in ansible.cfg.

ansible --version

ansible [core 2.16.6]
  config file = /workspaces/git/my-repo/ansible/ansible.cfg
  configured module search path = ['/home/vscode/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/python/3.11.6/lib/python3.11/site-packages/ansible
  ansible collection location = /home/vscode/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/python/current/bin/ansible
  python version = 3.11.6 (main, Dec 19 2023, 21:21:06) [GCC 11.4.0] (/usr/local/python/3.11.6/bin/python)
  jinja version = 3.1.4
  libyaml = True

Por que?

ansible
  • 1 respostas
  • 32 Views
Martin Hope
Saaru Lindestøkke
Asked: 2024-05-18 01:59:04 +0800 CST

Como posso ocultar um arquivo ou pasta usando Ansible no Windows?

  • 4

Existe uma maneira de marcar um arquivo ou pasta como oculto usando Ansible no Windows?

Eu verifiquei o win_filemódulo,

https://docs.ansible.com/ansible/latest/collections/ansible/windows/win_file_module.html

mas não consegui encontrar uma opção para criar arquivos ocultos.

Entendo que posso executar um script Powershell , mas para não sobrecarregar meus logs com marcas "alteradas", também precisaria verificar se um item já está oculto.

Existe uma maneira de usar o Ansible para criar um item oculto ou ocultar um item existente, sem a necessidade de verificar se o item está oculto?

ansible
  • 1 respostas
  • 82 Views
Martin Hope
Saaru Lindestøkke
Asked: 2024-05-02 23:42:05 +0800 CST

Como posso definir argumentos de comando Ansible com base nas chaves que um item de loop possui?

  • 6

Contexto

Estou usando o Ansible para configurar servidores Windows usando o módulo win_chocolatey .

No meu group_vars/windows_servers.ymlarquivo eu tenho:

choco_packages:
  - 7zip
  - git
  - vscode

E na minha tarefa do manual eu tenho:

- name: Install and upgrade software using Chocolatey
  hosts: windows_servers
  tasks:
    - name: Install latest package versions
      chocolatey.chocolatey.win_chocolatey:
        name: "{{ item }}"
        state: latest
      loop: "{{ choco_packages }}"

Até agora tudo bem.

No entanto, agora tenho alguns pacotes onde preciso instalar uma versão específica e/ou preciso passar determinados argumentos de instalação. Posso criar três listas no meu group_vars/windows_servers.yml, uma para cada objetivo (pacote mais recente, versão específica, pacote com parâmetros) e ter três tarefas que são alimentadas por cada lista, definindo as chaves apropriadas.

Mas para reduzir a carga de manutenção, prefiro ter uma única lista de pacotes onde eu opcionalmente defino as chaves necessárias e tenho uma tarefa que define as opções apropriadas dependendo das chaves de item disponíveis. Por exemplo:

choco_packages:
  - { name: "7zip", version: "22.1" }
  - { name: "git" , install_args: [ "/NoGuiHereIntegration", "/NoGitLfs"] }
  - { name: "vscode" }

Pergunta

Como devo escrever a tarefa Ansible para definir a versão e instalar os argumentos, se eles forem fornecidos, e instalar a versão mais recente, se não? Espero encontrar algo parecido **kwargscom Python.

O que eu tentei

Usando a when:condicional, posso criar três tarefas que tratam da parte da lista aplicável:

- name: Install and upgrade software using Chocolatey
  hosts: windows_servers
  tasks:
    - name: Install latest versions
      chocolatey.chocolatey.win_chocolatey:
        name: "{{ item.name }}"
        state: latest
      loop: "{{ choco_packages }}"
      when: item.version is not defined and item.install_args is not defined
    - name: Install specific versions
      chocolatey.chocolatey.win_chocolatey:
        name: "{{ item.name }}"
        version: "{{ item.version }}"
        state: present
      loop: "{{ choco_packages }}"
      when: item.version is defined
    - name: Install with parameters
      chocolatey.chocolatey.win_chocolatey:
        name: "{{ item.name }}"
        install_args: "{{ item.install_args }}"
        state: present
      loop: "{{ choco_packages }}"
      when: item.install_args is defined

Mas isso não lida com combinações de versione install_argse é bastante detalhado.

ansible
  • 2 respostas
  • 35 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