Como posso passar um parâmetro posicional que um script bash requer para ele em ansible?

1

como o título sugere, eu tenho um script que estou executando em ansible com o módulo de script. No entanto, ele precisa de um parâmetro posicional específico para ser especificado como um nome do servidor para funcionar neste caso como $ 1. Eu estou tentando encontrar uma maneira de fazer isso em ansible, mas até agora não foram bem sucedidos. Eu adoraria fazer isso com os módulos internos, mas o selinux 1 requer instalações na máquina de destino para habilitar essa funcionalidade e que não voará em servidores de produção. : (

Logo abaixo está como eu rodaria o script sem ansible:

bash selinux-disabler-ans.sh <servername>

O acima funciona muito bem por conta própria. No entanto, como eu iria fornecer em um playbook ansible? Aqui está o que estou usando para essa seção abaixo:

- name: Remediate/Disable selinux, it will only harm configurations right now, and should be disabled.
script: /opt/selinux-disabler-ans.sh

Não posso simplesmente codificar um argumento para o script, já que preciso dele para ser alterado, pois isso será executado em todo um domínio host. Eu realmente adoraria que isso pegasse o parâmetro posicional em tempo de execução, possivelmente usando o host que está rodando no momento, ou especificado através de --limit talvez? Agora eu estou executando este script com a minha própria automação juryrigged, mas eu realmente quero ansible ser capaz de fazê-lo. Alguém tem alguma ideia?

    
por Viscosity 14.09.2016 / 21:09

1 resposta

1

Primeiro, vou tentar ajudar com ansible. Você pode usar variáveis, por exemplo, você poderia escrever algo como:

- name: Remediate/Disable selinux, it will only harm configurations right now, and should be disabled.
script: /opt/selinux-disabler-ans.sh "{{ ansible_hostname }}"

Que usará o nome do host coletado do host durante a fase de 'configuração' de um playbook. Dê uma olhada nas variáveis que o ansible coleta para você da máquina remota aqui . Claro, você pode configurar suas próprias variáveis. Dê uma olhada na documentação on-line do ansible - é ótimo!

Agora, algumas observações. Eu não sei porque seu script leva um argumento como um nome de servidor. Observe que, de acordo com o módulo de script documentação , o script local é executado (local para o host do qual o ansible é executado), cópias para o host remoto e o executa lá. Então, talvez você nem precise desse argumento:)

E se você está começando com ansible, tente escrever playbooks usando papéis desde o início. Eles não são tão difíceis de encontrar e ajudam muito a gerenciar códigos em ambientes mais complexos.

    
por 14.09.2016 / 21:38