这是我的主要剧本,它启动了下面列出的角色
---
- hosts: slaves
roles:
- ntp
- nmap
- tcpdump
- unattended-upgrades
- traceroute
- apache
- mysql我想让用户决定是否要安装apache和mysql,方法是在执行剧本时输入“是”或“否”。我尝试过不同的东西,如vars_prompt、except和when,但都没有成功。还有达到我的目标吗?谢谢!
发布于 2019-03-07 23:05:24
如果您可以使用include_role而不是roles,那么您可以像这样运行一个剧本。
只需在提示符处提供一个空格分隔的列表。
---
- hosts: localhost
gather_facts: no
vars_prompt:
- name: run_roles
prompt: Which roles do you want to run
tasks:
- include_role:
name: "{{ role.role }}"
loop_control:
loop_var: role
when: role.role in run_roles
loop:
- role: ntp
- role: nmap
- role: tcpdump
- role: unattended-upgrades
- role: traceroute
- role: apache
- role: mysql发布于 2019-03-06 10:02:51
我终于找到了一些有用的东西--这就是包含在角色文件夹'apache‘中的剧本,它安装了这个服务
---
- name: Installation apache sur Centos et RedHat
yum:
name: httpd
state: present
when: (ansible_distribution == 'CentOS' or ansible_distribution == 'RedHat') and reponse_apache == 'oui'我声明了一个变量‘`reponse_apache’。如果用户说'oui',安装就开始了
我的主要剧本:
---
- hosts: slaves
roles:
# - ntp
# - nmap
# - tcpdump
# - unattended-upgrades
# - traceroute
- apache
# - mysql
vars_prompt:
- name: "reponse_apache"
prompt: "Voulez vous installer apache ? Une exception pare-feu pour le service http sera créée sur les systèmes CentOS 7 (oui/non) "
private: no
- name: "reponse_mysql"
prompt: "Voulez vous installer mysql ? (oui/non) "
private: no我创建了一个包含变量vars_prompt的节reponse_apache。我对mysql的变量reponse_mysql也做了同样的操作
---
- name: Installation python sur les systèmes Debian et Ubuntu
apt:
name: python3
state: present
when: (ansible_distribution == 'Debian' or ansible_distribution) == 'Ubuntu' and reponse_mysql == 'oui'
- name: Installation wget sur les systèmes CentOS et RedHat
yum:
name: wget
state: present
when: (ansible_distribution == 'CentOS' or ansible_distribution) == 'RedHat' and reponse_mysql == 'oui'
- file:
path: /etc/repo_mysql
state: directory
when: reponse_mysql == 'oui'
- name: Téléchargement dépôt mysql sur les systèmes CentOS et RedHat
get_url:
url: http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
dest: /etc/repo_mysql/mysql-community-release-el7-5.noarch.rpm
when: (ansible_distribution == 'CentOS' or ansible_distribution == 'RedHat') and reponse_mysql == 'oui'
- name: Installation dépôt mysql sur les systèmes CentOS et RedHat
yum:
name: /etc/repo_mysql/mysql-community-release-el7-5.noarch.rpm
state: present
when: (ansible_distribution == 'CentOS' or ansible_distribution == 'RedHat') and reponse_mysql == 'oui'
- name: Installation mysql sur tous les systèmes
yum:
name: mysql-server
state: present
when: reponse_mysql == 'oui'
- name: Creation BDD "vierge" sur tous les systèmes
mysql_db:
name: vierge
state: present
when: reponse_mysql == 'oui'
- name: Demarrage mysql sur les systèmes Debian et Ubuntu
service:
name: mysql
state: started
when: (ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu') and reponse_mysql == 'oui'
- name: Demarrage mysql sur les systèmes CentOS et RedHat
service:
name: mysqld
state: startedhttps://serverfault.com/questions/956836
复制相似问题