• ansible 使用roles简单部署LAMP平台


    目录

    一、了解roles目录

    二、基于构建LAMP平台创建roles目录

    1、在192.168.115.148创建目录

    2、书写php的测试页面

    3、编写httpd角色的main.yml文件

    4、编写mysql角色的main.yml文件

    6、编写lamp的playbook

    7、启动剧本

    8、访问


    一、了解roles目录

    在Ansible中,roles是一种组织和复用任务和变量的方式。Roles是一种可重用的模块化结构,用于将相关的任务、变量和处理逻辑组合在一起,以便在不同的剧本(playbook)中重复使用。

    通过使用roles,可以将复杂的任务分解成更小的、可管理的部分,并使剧本更具可读性和可维护性。Roles还可以促进代码的复用,因为可以将角色在不同的剧本中重复使用。

    一个role通常由以下组成:

    1. 任务(tasks):包含要执行的操作步骤。这些任务可以是与特定角色相关的任何操作,例如安装软件、配置文件、启动服务等。

    2. 变量(vars):存储角色所需的变量。这些变量可以在角色的任务中使用,以根据不同的需求进行自定义。

    3. 文件(files):包含角色所需的文件。这些文件可以是配置文件、脚本文件等。

    4. 模板(templates):包含用于生成配置文件等的模板文件。模板文件通常包含一些可自定义的变量,以便在生成文件时根据需要进行替换。

    5. 处理器(handlers):定义角色相关的处理程序,用于在特定事件发生时触发操作。例如,在配置文件更改后重新启动服务。

    通过将相关的任务、变量和文件组织在一起,roles提供了一种结构化的方式来管理和组织复杂的配置和部署任务。它们使剧本更易于编写、理解和维护,并促进了在不同的剧本中重用和分享配置和部署逻辑。

    1. roles/
    2. ├── role_name/ # role的名称
    3. │ ├── defaults/ # 存放变量默认值的目录
    4. │ │ └── main.yml # 变量默认值文件
    5. │ ├── tasks/ # 存放任务文件的目录
    6. │ │ └── main.yml # 任务文件
    7. │ ├── templates/ # 存放模板文件的目录
    8. │ │ └── template.j2 # 模板文件
    9. │ ├── vars/ # 存放特定角色变量的目录
    10. │ │ └── main.yml # 特定角色变量文件
    11. │ ├── handlers/ # 存放处理器文件的目录
    12. │ │ └── main.yml # 处理器文件
    13. │ ├── files/ # 存放文件的目录
    14. │ │ └── file.txt # 文件
    15. │ ├── meta/ # 存放描述文件的目录
    16. │ │ └── main.yml # 描述文件
    17. │ └── README.md # role的说明文件
    18. └── playbook.yml # 包含roles的Playbook文件

    二、基于构建LAMP平台创建roles目录

    实验环境:

    192.168.115.148  :  安装ansible、部署LAMP

    192.168.115.149  : 部署LAMP

    192.168.115.151  : 部署LAMP

    1、在192.168.115.148创建目录
    1. cd /etc/ansible/roles/
    2. mkdir -p {httpd,mysql,php}/{files,tasks,handlers,templates,vars,meta}
    3. touch {httpd,mysql,php}/{tasks,handlers,vars,meta}/main.yml
    4. tree
    5. ######################################################################
    6. [root@localhost roles]# tree
    7. .
    8. ├── http
    9. │   ├── files
    10. │   ├── handlers
    11. │   ├── meta
    12. │   ├── tasks
    13. │   ├── templates
    14. │   └── vars
    15. ├── mysql
    16. │   ├── files
    17. │   ├── handlers
    18. │   ├── meta
    19. │   ├── tasks
    20. │   ├── templates
    21. │   └── vars
    22. └── php
    23. ├── files
    24. ├── handlers
    25. ├── meta
    26. ├── tasks
    27. ├── templates
    28. └── vars
    2、书写php的测试页面
    1. vim /etc/index.php
    2. phpinfo();
    3. ?>
    3、编写httpd角色的main.yml文件
    1. vim /etc/anseble/roles/http/tasks/mian/yml
    2. ---
    3. - name: 安装httpd
    4. yum: name=httpd state=present
    5. - name: 分发php测试页面
    6. copy: src=/index.php dest=/var/www/html/index.php
    7. - name: 启动httpd、设为开机自启
    8. service: name=httpd state=started enabled=yes
    9. vim /etc/ansible/roles/http/hardlers/mian.yml
    10. ---
    11. - name: restart httpd
    12. shell: systemctl restart httpd
    4、编写mysql角色的main.yml文件
    1. vim /etc/ansible/roles/mysql/tasks/main.yml
    2. ---
    3. - name: 安装mysql
    4. shell: yum -y install mariadb mariadb-server
    5. - name: 启动mariadb,并设为开机自启
    6. service: name=mariadb state=started enabled=yes

    5、编写php角色的main.yml文件

    1. vim /etc/ansible/roles/php/tasks/main.yml
    2. ---
    3. - name: 安装php及依赖包
    4. 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,php-mysql state=present
    5. notify: restart httpd
    6. vim /etc/ansible/roles/php/hardlers/mian.yml
    7. ---
    8. - name: restart httpd
    9. shell: systemctl restart httpd
    6、编写lamp的playbook
    1. vim /etc/ansible/lamp.yml
    2. ---
    3. - hosts: group
    4. remote_user: root
    5. roles:
    6. - http
    7. - mysql
    8. - php
    7、启动剧本

    ansible-playbook /etc/ansible/lapm.yml

    执行结果

    8、访问

  • 相关阅读:
    面试官:group by 有哪些注意事项?
    关于linux的一点好奇心(四):tail -f文件跟踪实现
    SpringCloud源码分析 (Eureka-Server-处理客户端删除状态请求) (六)
    Linux内核驱动开发-001字符设备开发-内核中断驱动独立按键
    Day 6 C++
    [附源码]计算机毕业设计Springboot电影推荐网站
    [go]配置文件(CSV与YAML)读写
    使用Vueuse的useIntervalFn方法制作一个获取验证码倒计时按钮
    【Leetcode合集】9. 回文数
    自费访学|金融公司高管赴世界名校伯克利交流
  • 原文地址:https://blog.csdn.net/2302_78534730/article/details/132766606