Вот моя основная игра, в которой запускаются роли, перечисленные ниже.
---
- hosts: slaves
roles:
- ntp
- nmap
- tcpdump
- unattended-upgrades
- traceroute
- apache
- mysql
Я хочу, чтобы пользователь сам решил, хочет ли он установить apache
и mysql
, набрав yes или no в предложении, которое появится во время выполнения playbook. Я пробовал разные вещи вроде vars_prompt
, except
и when
но безуспешно. есть ли способ достичь моей цели? Спасибо !
Действительно, специальное взаимодействие с пользователем - это не то, о чем идет речь. Но вы можете просто хешировать несколько строк из своей книги перед ее запуском:
--- - hosts: slaves roles: - ntp - nmap - tcpdump - unattended-upgrades - traceroute # leave these today: # - apache # - mysql
Если вы можете использовать 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
Я наконец нашел что-то, что работает. Это руководство, включенное в папку ролей 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: started