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 / unix / Perguntas / 424151
Accepted
pyramid13
pyramid13
Asked: 2018-02-15 07:06:19 +0800 CST2018-02-15 07:06:19 +0800 CST 2018-02-15 07:06:19 +0800 CST

pular alguma tarefa com prompt no ansible [fechado]

  • 772
Fechado. Esta questão está fora do tópico . Atualmente não está aceitando respostas.

Esta pergunta não parece ser sobre Unix ou Linux dentro do escopo definido no centro de ajuda .

Fechado há 4 anos .

Melhore esta questão

Como posso acessar para responder a um prompt em outro servidor? meus anfitriões:

[dbs]
db1
db2
db3

Eu tenho uma função e a minha tasks/main.ymlé:

- pause:
   prompt: "Do you want to install mysql (yes/no)?"
  register: my_pause

- include_tasks: mysql.yml
  when: my_pause.user_input | bool

quando eu executo esta função, apenas o primeiro servidor pula MySQL.ymle para outro servidor executa MySQL.yml.

Quero que, se o usuário digitar não para o prompt de resposta, MySQL.yml‍‍ não seja executado para nenhum servidor. mas quando entro não vai ser instalado de novo!!

 [root@anisble ansible]# ansible-playbook playbooks/test.yml 

PLAY [dbs] 
**************************************************************
    TASK [Gathering Facts] 
*******************
ok: [db1]
ok: [db3]
ok: [db2]

TASK [ssh : pause] ********************************************************************************
[ssh : pause]
Do you want to install mysql (yes/no)?:
no
  ok: [db1]

TASK [ssh : include_tasks] ********************************************************************************
skipping: [db1]
included: /etc/ansible/roles/ssh/tasks/mysql.yml for db2, db3

TASK [ssh : install mysql] ********************************************************************************
ok: [db3]
ok: [db2]

PLAY RECAP ********************************************************************************
db1                        : ok=2    changed=0    unreachable=0    failed=0   
db2                        : ok=3    changed=0    unreachable=0    failed=0   
db3  

Editado-1

Eu uso a primeira solução sua, mas quando eu entrar não será instalado novamente!!

task/main.yml:

    ---
    - pause:
       prompt: "Do you want to install mysql (yes/no)?"
      register: install_mysql
      delegate_to: localhost

- include_tasks: mysql.yml
  when: hostvars['localhost']['install_mysql']['user_input'] == 'yes'

A saída é:

[root@anisble ansible]# ansible-playbook playbooks/test.yml 
PLAY [dbs] ********************************************************************************
TASK [Gathering Facts] ********************************************************************************
ok: [db2]
ok: [db1]
ok: [db3]

TASK [ssh : pause] ********************************************************************************
[ssh : pause]
Do you want to install mysql (yes/no)?:
no
  ok: [db1 -> localhost]

TASK [ssh : include_tasks] ********************************************************************************
included: /etc/ansible/roles/ssh/tasks/mysql.yml for db1, db2, db3

TASK [ssh : install mysql] ********************************************************************************
  changed: [db1]
changed: [db3]
changed: [db2]

  PLAY RECAP ********************************************************************************
    db1                        : ok=4    changed=1    unreachable=0    failed=0   
    db2                        : ok=3    changed=1    unreachable=0    failed=0   
    db3                        : ok=3    changed=1    unreachable=0    failed=0   

Editado-2

Este método funciona.

- name: confirm
  pause:
    prompt: "Do you want to install mysql (yes/no)?"
  register: install_mysql

- include_tasks: mysql.yml
  when: hostvars[groups['dbs'][0]]['install_mysql']['user_input'] == "yes"
ansible
  • 1 1 respostas
  • 9484 Views

1 respostas

  • Voted
  1. Best Answer
    ctx
    2018-02-15T08:41:48+08:002018-02-15T08:41:48+08:00

    Executar pausa no localhost

    Você pode executar a pausetarefa em um host específico, por exemplo, localhoste obter a resposta da matriz hostvars hostvars['localhost']( roubada daqui ).

    - name: Pause prompt on localhost
      hosts: localhost
      tasks:
        - name: Prompt
          pause:
            prompt: "Do you want to install mysql (yes/no)?"
          register: install_mysql
    
    - name: Get the answer from the hostvars array
      hosts: all  
      tasks:
        - name: Include role when you answered 'yes'
          include_tasks: mysql.yml
          when: hostvars['localhost']['install_mysql']['user_input'] == 'yes'
    

    Você precisa usar um jogo dedicado nesse host para poder acessar a resposta na matriz hostvars. Se você executá-lo uma vez em um grupo de hosts (como em sua solicitação original), precisará adivinhar qual host será processado primeiro e usar hostvars['firstprocessedhost'](às vezes hostvars['db1']).

    Quando você usa delegate_to: localhosta tarefa ainda é executada db1e a resposta é armazenada em hostvars['db1'].

    Você não deve depender da ordem de seus hosts e o módulo de pausa destina-se a pausar um playbook para não solicitar dados do usuário.

    vars_prompt

    Se for possível, você deve usar a vars_promptseção do seu jogo:

    - name: A play with a vars_prompt section
      hosts: all  
      vars_prompt:
        - name: install_mysql
          prompt: "Do yo want to install mysql (yes/no)?"
    
      tasks:
        - name: Include role when you answered 'yes'
          include_tasks: mysql.yml
          when: install_mysql == 'yes'
    
    • 2

relate perguntas

  • valor separador da variável de fato em ansible

  • playbook dando erro de sintaxe

  • sshpass não está funcionando no alpine linux

  • Resposta vazia do módulo shell do Ansible

Sidebar

Stats

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

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk 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