我有一组Ansible
个剧本,主要的yml文件就像这样
- hosts: all
roles:
- common
- install_nginx
我想在触发剧本时添加确认消息。我试过这个并没有用
- hosts: all
vars_prompt:
- name: CONFIRM
prompt: Just to confirm you will install stuff
tasks:
- fail: no deployment this time
when: CONFIRM != 'yes'
roles:
- common
- install_nginx
如何在不修改每个vars_prompt
的情况下使用role
?
答案 0 :(得分:4)
如果您查看使用select
P1.*, PA.AttrDesc
from
prod1 P1
left join
ProdAttr PA on P1.ProdID = PA.ProdID
where
AttrID= 4 and AttrVal=68;
运行Playbook的输出,您会看到vars_prompt
任务在其他角色之后运行。 Ansible docs for playbooks and roles:
如果游戏仍有“任务”部分,则执行这些任务 在角色应用之后。
由于上述文档还提到您是否要强制任务在任何角色之前运行,因此您可以使用fail
。
因此要获得确认样式提示,您只需执行此操作:
pre_tasks
答案 1 :(得分:1)
我不太确定,但其工作方式是:
- hosts: all
vars_prompt:
- name: "confirm"
prompt: Just to confirm you will install stuff
private: no
default: "no"
tasks:
- name: Install Nginx
apt: name=nginx
sudo: true
when: confirm == "yes"
现在,如果我们需要根据条件调用每个角色,我想我们应该使用tags
。
答案 2 :(得分:0)
如何对角色使用Ansible vars_prompt
我获得了在角色角色部分使用vars_prompts的解决方案
我像以前一样直接将vars_prompt包含在main.yml剧本中
- hosts: "{{HOSTS}}"
gather_facts: yes
become: yes
roles:
- syslog
- splunk
- nmon
- trendmicro
- user-creation
- extened-history
vars_prompt:
- name: "user_password"
prompt: "Enter User Password"
private: yes
confirm: yes
==========================================================
下面是执行剧本的简单命令
# ansible-playbook ort-linux.yml -e "HOSTS=TESTSERVER"
Enter User Password:
confirm Enter User Password:
========================================================
下面是我用于创建用户ID的角色剧本
---
- name: "Task-1 create Linux Team user"
user:
name: "{{item}}"
comment: LINUX_UNIX_TEAM
group: LINUX_UNIX_TEAM
shell: /bin/bash
generate_ssh_key: yes
ssh_key_bits: 2048
ssh_key_file: .ssh/id_rsa
createhome: yes
password: "{{user_password|password_hash('sha512')}}"
loop:
- sam
- jack
- kumar
- ravi
tags: linuxuser