今天继续给大家介绍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文件架构,并在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();
?>
然后,我们编写各个分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 Roles安抓LAMP架构成功!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200