首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible -可以跳过角色的执行吗?

问Ansible -可以跳过角色的执行吗?
EN

Server Fault用户
提问于 2019-03-05 12:59:04
回答 2查看 6.8K关注 0票数 1

这是我的主要剧本,它启动了下面列出的角色

代码语言:javascript
复制
---
 - hosts: slaves
   roles:
      - ntp
      - nmap
      - tcpdump
      - unattended-upgrades
      - traceroute
      - apache
      - mysql

我想让用户决定是否要安装apache和mysql,方法是在执行剧本时输入“是”或“否”。我尝试过不同的东西,如vars_prompt、except和when,但都没有成功。还有达到我的目标吗?谢谢!

EN

回答 2

Server Fault用户

发布于 2019-03-07 23:05:24

如果您可以使用include_role而不是roles,那么您可以像这样运行一个剧本。

只需在提示符处提供一个空格分隔的列表。

代码语言:javascript
复制
---
- 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
票数 1
EN

Server Fault用户

发布于 2019-03-06 10:02:51

我终于找到了一些有用的东西--这就是包含在角色文件夹'apache‘中的剧本,它安装了这个服务

代码语言:javascript
复制
---
    - 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',安装就开始了

我的主要剧本:

代码语言:javascript
复制
---
 - 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也做了同样的操作

代码语言:javascript
复制
---
   - 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
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/956836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档