• Ansible中的角色使用


    Ansible中的角色使用:

    目录

    一、ansible角色简介

    二、roles目录结构

     三、roles的创建

    四、roles的使用 

    1、书写task主任务

    2、触发器模块

    3、变量模块

     4、j2模块

     5、files模块 

     6、启用模块

    7、执行playbook

    五、控制任务执行顺序

    六、多重角色的使用


     

    一、ansible角色简介

    1. Ansible roles 是为了层次化,结构化的组织Playbook 
    2. roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们
    3. roles一般用于基于主机构建服务的场景中,在企业复杂业务场景中应用的频率很高
    4. 以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等;相当于函数的调用把各个功能切割 成片段来执行。

    二、roles目录结构

    files存放copy或script等模块调用的函数
    tasks定义各种task,要有main.yml,其他文件include包含调用
    handlers定义各种handlers,要有main.yml,其他文件include包含调用
    vars定义variables,要有main.yml,其他文件include包含调用
    templates存储由template模块调用的模板文本
    meta定义当前角色的特殊设定及其依赖关系,要有main.yml的文件
    defaults要有main.yml的文件,用于设定默认变量
    tests用于测试角色

     三、roles的创建

    ansible—galaxy命令工具:
    Ansible Galaxy 是一个免费共享和下载 Ansible 角色的网站,可以帮助我们更好的定义和学习roles;
    ansible-galaxy命令默认与https://galaxy.ansible.com网站API通信,可以查找、下载各种社区开发的Ansible 角色。

    vim ansible.cfg

     

    1. mkdir roles
    2. cd roles/
    3. ansible-galaxy init apache

    1. cd ..
    2. ansible-galaxy list

    四、roles的使用 

    例子:下载httpd,配置虚拟主机并认证加密

    1、书写task主任务

    1. vim tasks/main.yml
    2. - name: yum
    3. yum:
    4. name: httpd
    5. state: present
    6. - name: service
    7. service:
    8. name: httpd
    9. state: started
    10. enabled: yes
    11. - name: create doc
    12. lineinfile:
    13. path: "{{item.doc}}/index.html"
    14. line: "{{item.index}}"
    15. create: yes
    16. loop: "{{webs}}"
    17. - name: create vhosts.conf
    18. template:
    19. src: vhosts.conf.j2
    20. dest: /etc/httpd/conf.d/vhost.conf
    21. notify: restart httpd
    22. - name: auth
    23. copy:
    24. src: .htpasswd
    25. dest: /etc/httpd/.htpasswd
    26. notify: restart httpd

    2、触发器模块

    1. vim handlers/main.yml
    2. cat handlers/main.yml
    3. - name: restart httpd
    4. service:
    5. name: httpd
    6. state: restarted

    3、变量模块

    1. vim vars/main.yml
    2. cat vars/main.yml
    3. webs:
    4. - doc: /var/www/html
    5. index: "www.westos.org's page"
    6. - name: bbs.westos.org
    7. doc: /var/www/virtual/westos.org/bbs/html
    8. index: "bbs.westos.org's page"
    9. - name: login.westos.org
    10. doc: /var/www/virtual/westos.org/login/html
    11. index: "login.westos.org's page"

     4、j2模块

    1. vim templates/vhosts.conf.j2
    2. cat templates/vhosts.conf.j2
    3. {% for web in webs %}
    4. {% if web.name is defined %}
    5. <VirtualHost *:80>
    6. ServerName {{web.name}}
    7. {% endif %}
    8. {% if web.name is not defined %}
    9. <VirtualHost _default_:80>
    10. {% endif %}
    11. DocumentRoot {{web.doc}}
    12. </VirtualHost>
    13. {% endfor %}
    14. <Directory "/var/www/virtual/westos.org/login/html">
    15. AuthUserfile "/etc/httpd/.htpasswd"
    16. AuthName "Please input your name and password"
    17. AuthType basic
    18. Require user yyl
    19. </Directory>

     5、files模块 

    1. touch .htpasswd
    2. htpasswd -cm .htpasswd yyl
    3. cp /etc/httpd/.htpasswd files/

     6、启用模块

    1. vim httpd.yml
    2. - name: instell http
    3. hosts: all
    4. roles:
    5. - role: apache

    7、执行playbook

    ansible-playbook httpd.yml

     

     

    五、控制任务执行顺序

    pre_task:任务执行前
    post_tasks:任务执行后

    例子:

    1. - name: instell http
    2. hosts: all
    3. pre_tasks:
    4. - name: test
    5. debug:
    6. msg: this is start !!
    7. roles:
    8. - role: apache
    9. post_tasks:
    10. - name: show post
    11. debug:
    12. msg: this is end !!

     

    六、多重角色的使用

    1、访问地址角色下载地址:galaxy.ansible.com roles

    2、搜索nginx,往后翻一下找到roles

     

    3、下载角色 

    ansible-galaxy collection install ivansible.nginx

    要注意出于安全原因,下载的代码需要仔细研读每一行代码!!!

  • 相关阅读:
    编译AirSim1.5.0
    【Uva】10976-Fractions Again?!
    自然科学六大基础学科:数学,物理学,化学,生物学,地球科学,天文学
    Linux 学习笔记 2022-11-12---------Linux基础
    【大数据平台】从Hadoop到Spark安装配置教程
    生物通路数据库收录1600+整合的经典通路
    Vue编程式路由导航
    文件包含漏洞总结
    [杂谈]-从硬件角度理解二进制数
    Sentinel源码解析-源码环境搭建
  • 原文地址:https://blog.csdn.net/weixin_56744753/article/details/134221543