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 / 1149744
Accepted
Yousuf
Yousuf
Asked: 2023-12-14 01:06:06 +0800 CST2023-12-14 01:06:06 +0800 CST 2023-12-14 01:06:06 +0800 CST

Ansible lineinfile substitui pela variável do sistema

  • 772

Estou encontrando um problema ao usar o Ansible para modificar dinamicamente um arquivo de configuração do agente Zabbix. Especificamente, estou tentando empregar um módulo lineinfile ansible com um loop para atualizar várias linhas dentro do arquivo.

O script efetivamente altera os valores dentro do arquivo, mas estou enfrentando um erro de sintaxe ao tentar incorporar uma variável na configuração do agente Zabbix. O objetivo é substituir a linha "Hostname=Zabbix Server" por "Hostname=$HOSTNAME", permitindo que o valor seja obtido automaticamente da máquina alvo. Por exemplo, se o nome do computador for "computador1", o arquivo do agente deverá refletir "Hostname=computador1".

Abaixo está o trecho relevante do meu código lineinfile atual:

 - name: Update Zabbix Agent Configuration
   ansible.builtin.lineinfile:
    path: /etc/zabbix/zabbix_agentd.conf
    regexp: "{{ item.regexp }}"
    line: "{{ item.line }}"
  loop:
    - { regexp: '^Server=', line: 'Server=monlocal.xyz.com' }
    - { regexp: '^ServerActive=', line: 'ServerActive=monlocal.xyz.com' }
    - { regexp: '^Hostname=', line: 'Hostname={{ ansible_facts['hostname'] }}' }

aqui está o erro que recebo.

The offending line appears to be:

        - { regexp: '^ServerActive=', line: 'ServerActive=monlocal.xyz.com' }
                                  ^ here

There appears to be both 'k=v' shorthand syntax and YAML in this task. Only one syntax may be used.
We could be wrong, but this one looks like it might be an issue with
missing quotes. Always quote template expression brackets when they
start a value. For instance:

    with_items:
      - {{ foo }}

Should be written as:

    with_items:
      - "{{ foo }}"

Eu sei que o erro está na 3ª linha. quando removo a terceira linha obtenho o resultado esperado. qualquer ajuda será muito apreciada.

Obrigado, Yousuf

linux
  • 1 1 respostas
  • 153 Views

1 respostas

  • Voted
  1. Best Answer
    U880D
    2023-12-15T01:00:54+08:002023-12-15T01:00:54+08:00

    Como o arquivo de configuração padrão do Zabbix Agent é um arquivo INI com apenas

    LogFile=/tmp/zabbix_agentd.log
    Server=127.0.0.1
    ServerActive=127.0.0.1
    Hostname=Zabbix server
    

    um manual de exemplo mínimo com ini_filemódulo – Ajustar configurações em arquivos INI

    ---
    - hosts: localhost
      become: false
      gather_facts: false
    
      tasks:
    
      - ini_file:
          path: zabbix_agentd.conf
          option: "{{ item.option }}"
          value: "{{ item.value }}"
        loop:
          - { option: 'Server', value: 'zabbix.example.com' }
          - { option: 'ServerActive', value: 'zabbix.example.com' }
          - { option: 'Hostname', value: '{{ inventory_hostname }}' }
    

    resultará em uma saída de

    TASK [ini_file] ****************************************************************************
    changed: [localhost] => (item={u'option': u'Server', u'value': u'zabbix.example.com'})
    changed: [localhost] => (item={u'option': u'ServerActive', u'value': u'zabbix.example.com'})
    changed: [localhost] => (item={u'option': u'Hostname', u'value': u'localhost'})
    

    e um arquivo de configuração alterado com

    LogFile=/tmp/zabbix_agentd.log
    Server = zabbix.example.com
    ServerActive = zabbix.example.com
    Hostname = localhost
    

    Portanto, não há necessidade absoluta de "editar" o arquivo com lineinfile e expressões regulares.

    • 2

relate perguntas

  • Como descobrir detalhes sobre hardware na máquina Linux?

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