• Ansible学习笔记15


    1、roles:(难点)

    roles介绍:

    roles(角色):就是通过分别将variables,tasks及handlers等放置于单独的目录中,并可以便捷地调用他们的一种机制。

    假设我们要写一个playbook来安装管理lamp环境,那么这个playbook就会写很长。所以我们希望把这个很大的文件分成多个功能拆分,分成apache管理、php管理、mysql管理,然后在需要使用的时候直接调用就可以了,避免重复写。类似编程里的模块化的概念,已达到代码复用的效果。

    创建roles的目录结构

    1、files:用来存放由copy模块或者scripts模块调用的模板;

    2)tasks:至少有一个main.yml文件,定义各个tasks;

    3)handlers:有一个main.yml文件,定义各handlers;

    4)templates:用来存放jinja2模板;

    5)vars:有一个main.yml,定义变量的;

    6)meta:有一个main.yml文件,定义此角色的特殊设定及其依赖关系。

    注意:在每个角色的目录中分别创建files,tasks,handlers,templates,vars和meta目录,用不到的目录可以创建为空目录。

    通过roles实现lamp:

    需要定制三个角色:apache、mysql、php

    1. [root@localhost roles]# tree
    2. .
    3. ├── httpd
    4. │   ├── files
    5. │   ├── handlers
    6. │   │   └── main.yml
    7. │   ├── meta
    8. │   │   └── main.yml
    9. │   ├── tasks
    10. │   │   └── main.yml
    11. │   ├── templates
    12. │   └── vars
    13. │   └── main.yml
    14. ├── mysql
    15. │   ├── files
    16. │   ├── handlers
    17. │   │   └── main.yml
    18. │   ├── meta
    19. │   │   └── main.yml
    20. │   ├── tasks
    21. │   │   └── main.yml
    22. │   ├── templates
    23. │   └── vars
    24. │   └── main.yml
    25. └── php
    26. ├── files
    27. ├── handlers
    28. │   └── main.yml
    29. ├── meta
    30. │   └── main.yml
    31. ├── tasks
    32. │   └── main.yml
    33. ├── templates
    34. └── vars
    35. └── main.yml
    36. 21 directories, 12 files

    这个roles,就并列写了三个roles。类似于调用了函数。

    检查agent的文件:

    1. [root@agent1 share]# cd /var/www/html
    2. [root@agent1 html]# ll
    3. total 8
    4. -rw-r--r-- 1 root root 10 Aug 31 09:07 index.html
    5. -rw-r--r-- 1 root root 22 Aug 31 09:07 test.php
    1. [root@localhost httpd]# cat tasks/main.yml
    2. - name: install apache etc packages
    3. yum: name=httpd,httpd-devel state=latest
    4. - name: sync configure file
    5. copy: src=/etc/ansible/roles/httpd/files/httpd.conf dest=/etc/httpd/conf/httpd.conf
    6. notify: restart httpd
    7. - name: copy data files
    8. copy: src=/etc/ansible/roles/httpd/files/httpd_doc/ dest=/var/www/html/
    9. # notify: restart httpd
    10. - name: start httpd and enabled in boot
    11. service: name=httpd state=started enabled=on
    1. [root@localhost httpd]# cat handlers/main.yml
    2. - name: restart httpd
    3. service: name=httpd state=restarted
    1. [root@localhost roles]# cat mysql/tasks/main.yml
    2. - name: Install mariadb
    3. yum: name=mariadb-server,mariadb-devel state=latest
    4. - name: Start mariadb and enabled=yes
    5. service: name=mariadb state=started enabled=on
    1. [root@localhost roles]# cat php/tasks/main.yml
    2. - name: install php packages
    3. yum: name=php,php-gd,php-ldap,php-odbc,php-pear,php-xml,php-xmlrpc,php-mbstring,php-snmp,php-soap,curl,curl-devel,php-bcmath state=present
    4. notify: restart httpd
  • 相关阅读:
    高德百度的逆地理编码接口对比
    linux 进程管理命令
    RabbitMQ:路由模式
    机智云工业级4G Cat.1 DTU全面升级数据采集485/232 GC521
    Kubernetes中Pod容器的使用
    《杨澜访谈录》逐风者|对话智慧医疗风口上的先行者
    【Python机器学习】回归模型:推土机售价预测
    U盘里文件损坏无法打开怎么恢复?
    SpringBoot自动配置原理
    常见BUG如何在测试过程中分析定位
  • 原文地址:https://blog.csdn.net/chang_chunhua/article/details/132599647