Ansible详解(十四)——Ansible Role实战

今天继续给大家介绍Linux运维相关知识,本文主要内容是Ansible中的Role配置实战。

一、实战目的和思路

今天我们进行一次Ansible的Role实战,实战的目的是使用Ansible写一个Roles控制脚本,控制被控端设备上通过YUM的方式安装LAMP架构。
为完成上述任务,我们需要创建一个名为LAMP的文件夹,该文件夹作为Role的总文件夹,在该文件夹下,分别创建 prepare、apache、mysql和php的子文件夹,这些作为LAMP架构的组成部分,在这每个子文件夹下面,再分别创建名为tasks、files、vars、meta、default和handlers的子文件夹。最后,再创建一个总的Playbook,用于调用这些子Role。

二、Role准备

首先,我们先创建相关的Role文件架构,并在Ansible设备上安装LAMP架构。在Ansible设备上安装LAMP架构是为了获取这些软件的配置文件,如果可以通过其他的方式获取,那么也可以跳过此步骤。
执行命令:

mkdir -p /etc/ansible/role/lamp/{prepare,apache,mysql,php}/{tasks,vars,files,templates,meta,default,handlers}

执行完毕后,创建的文件夹架构(部分)如下:

接下来,我们在Ansible设备上安装mysql、apache、php,执行命令:

yum install -y mariadb mariadb-server httpd php php-devel

安装完毕后,我们把修改各个软件的配置文件(如果必要),并且把配置文件复制到对应的文件夹下。执行命令:

cp -a /etc/httpd/conf/httpd.conf /etc/ansible/role/lamp/apache/files/httpd.conf
cp -a /etc/my.cnf /etc/ansible/role/lamp/mysql/files/my.cnf

然后创建LAMP的测试脚本,新创建/etc/ansible/role/lamp/php/files/index.php文件,并写入如下内容:


phpinfo();
?>

三、Playbook编写

然后,我们编写各个分Role的Playbook。
创建prepare/tasks/main.yml,写入如下内容:

- name: Shutdown Firewall
  shell: iptables -F;setenforce 0;systemctl stop firewalld

创建apache/tasks/main.yml,写入如下内容:

- name: Install Apache
  yum: name=httpd state=installed
- name: Config Apache
  copy: src=httpd.conf dest=/var/www/html/
  notify: Restart Apache

创建apache/handlers/main.yml,写入如下内容:

- name: Restart Apache
  service: name=httpd state=restarted

创建mysql/tasks/main.yml,写入如下内容:

- name: Install MySQL 1
  yum: name=mariadb state=installed
- name: Install MySQl 2
  yum: name=mariadb-server state=installed
- name: Config MySQL
  copy: src=my.cnf dest=/etc/my.cnf
  notify: Restart Mariadb

创建mysql/handlers/main.yml,写入如下内容:

- name: Restart Mariadb
  service: name=mariadb state=restarted

创建php/tasks/main.yml,写入如下内容:

- name: Install PHP
  yum: name=php state=installed
- name: Install PHP-MySQL
  yum: name=php-mysql state=installed
- name: Config Main page
  copy: src=index.php dest=/var/www/html/
- name: Config Main page
  shell: rm -rf /var/www/html/index.html

创建main.yml,写入如下内容:

- name: LAMP
  remote_user: root
  hosts: exp
  roles:
   - prepare
   - apache
   - mysql
   - php

上述所有配置完成后,执行命令:

ansible-playbook /etc/ansible/role/lamp/main.yml

执行结果如下:

Ansible详解(十四)——Ansible Role实战_第1张图片
可见,我们的Ansible Roles安抓LAMP架构成功!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

你可能感兴趣的:(自动化运维,运维,centos,linux,ansible,Role)