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