一、设置ansible的组
[root@m0 ~]# vim /etc/ansible/hostss0 ansible_ssh_host=192.168.2.110 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=1s1 ansible_ssh_host=192.168.2.111 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=1s2 ansible_ssh_host=192.168.2.112 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=1[s]s0s1s2
二、使用剧本修改nginx的端口号为8080
[root@m0 ~]# vim /etc/ansible/playbook/nginx.yml---- hosts: sremote_user: roottasks:- name: 卸载httpdyum: name=httpd state=absent- name: 安装nginxyum: name=nginx state=present- name: 修改资源文件shell: echo 'i am nginx,port is 80' > /usr/share/nginx/html/index.html- name: 修改端口command: sed -i '/listen/s/80/8080/g' /etc/nginx/nginx.confnotify:- restart nginx- name: 启动服务service: name=nginx state=started enabled=yeshandlers:- name: restart nginxservice: name=nginx state=restarted...[root@m0 ~]# ansible-playbook /etc/ansible/playbook/nginx.yml
三、roles
1.环境部署
[root@m0 ~]# cd /etc/ansible/roles[root@m0 roles]# mkdir nginx[root@m0 roles]# lsnginx[root@m0 roles]# cd nginx/[root@m0 nginx]# mkdir files[root@m0 nginx]# mkdir tasks[root@m0 nginx]# mkdir handlers/[root@m0 nginx]# mkdir handlers[root@m0 nginx]# mkdir templates[root@m0 nginx]# mkdir vars[root@m0 nginx]# mkdir meta[root@m0 nginx]# tree.├── files├── handlers├── meta├── tasks├── templates└── vars6 directories, 0 files[root@m0 nginx]# touch files/main.yml[root@m0 nginx]# touch handlers/main.yml[root@m0 nginx]# touch tasks/main.yml[root@m0 nginx]# touch vars/main.yml[root@m0 nginx]# touch meta/main.yml[root@m0 nginx]# rm -rf files/main.yml [root@m0 nginx]# tree.├── files├── handlers│ └── main.yml├── meta│ └── main.yml├── tasks│ └── main.yml├── templates└── vars└── main.yml6 directories, 4 files[root@m0 nginx]# cd
2.下载nginx的主配置文件
[root@m0 ~]# vim /etc/ansible/playbook/test002.yml ---- hosts: sremote_user: rootroles:- nginx...
3.运行文件
[root@m0 ~]# ansible-playbook /etc/ansible/playbook/test002.yml PLAY [s] ***************************************************************************TASK [Gathering Facts] *************************************************************ok: [s1]ok: [s2]ok: [s0]PLAY RECAP *************************************************************************s0 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 s1 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 s2 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
4.卸载nginx
[root@m0 ~]# ansible s -m yum -a 'name=nginx state=absent'
5.编辑配置文件-安装nginx
[root@m0 ~]# vim /etc/ansible/roles/nginx/tasks/main.yml ---- name: 卸载httpdyum: name=httpd state=absent- name: 卸载nginxyum: name=nginx state=absent- name: 安装nginxyum: name=nginx state=present- name: 启动服务service: name=nginx state=started enabled=yes...
6.运行main.yml配置文件
[root@m0 ~]# ansible-playbook /etc/ansible/playbook/test002.yml PLAY [s] ***************************************************************************TASK [Gathering Facts] *************************************************************ok: [s2]ok: [s1]ok: [s0]TASK [nginx : 卸载httpd] *************************************************************ok: [s1]ok: [s2]ok: [s0]TASK [卸载nginx] *********************************************************************ok: [s0]ok: [s1]ok: [s2]TASK [安装nginx] *********************************************************************changed: [s1]changed: [s2]changed: [s0]TASK [nginx : 启动服务] ****************************************************************changed: [s0]changed: [s1]changed: [s2]PLAY RECAP *************************************************************************s0 : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 s1 : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 s2 : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
四、使用roles搭建lnmp
1.nginx修改端口为8080
2.mariadb中创建eleme数据库
3.创建user表
字段 | 类型 | 约束 | 字段名称 |
---|---|---|---|
id | int | 主键约束、自增 | 编号 |
username | varchar | 非空主键 | 账号 |
password | varchar | 非空主键 | 密码 |
remark | varchar | 没有主键 | 账号权限说明 |
1.主配置文件
[root@m0 ~]# vim /etc/ansible/playbook/test003.yml---- hosts: sremote_user: rootroles:- mariadb...
2.拷贝文件nginx且改名为mariadb
[root@m0 ~]# cd /etc/ansible/roles/[root@m0 roles]# lsnginx[root@m0 roles]# cp -r nginx mariadb[root@m0 roles]# lsmariadb nginx[root@m0 roles]# cd mariadb/[root@m0 mariadb]# lsfiles handlers meta tasks templates vars
3.创建script目录
[root@m0 mariadb]# cd ..[root@m0 roles]# mkdir script[root@m0 roles]# cd script/
4.写一个数据库的脚本
[root@m0 script]# vim dbtable.sh#!/bin/bashmysql << EOFcreate database if not exists eleme charset utf8mb4;use eleme;create table user(id int primary key auto_increment,username varchar(45) not null,password varchar(45) not null,remark varchar(45));quitEOF
5.修改配置文件
[root@m0 mariadb]# vim /etc/ansible/roles/mariadb/tasks/main.yml---- name: 卸载mariadbyum: name=mariadb,mariadb-server,mariadb-devel state=absent- name: 安装mariadbyum: name=mariadb,mariadb-server,mariadb-devel state=present- name: 启动mariadb服务service: name=mariadb state=started enabled=yes- name: 执行脚本,创建数据库和数据表script: /etc/ansible/roles/script/dbtable.sh...
6.运行:
[root@m0 script]# cd[root@m0 ~]# ansible-playbook /etc/ansible/playbook/test003.ymlPLAY [s] ***************************************************************************TASK [Gathering Facts] *************************************************************ok: [s1]ok: [s0]ok: [s2]TASK [卸载mariadb] *******************************************************************changed: [s2]changed: [s0]changed: [s1]TASK [安装mariadb] *******************************************************************changed: [s0]changed: [s2]changed: [s1]TASK [启动mariadb服务] *****************************************************************changed: [s0]changed: [s2]changed: [s1]TASK [mariadb : 执行脚本,创建数据库和数据表] ****************************************************changed: [s0]changed: [s2]changed: [s1]PLAY RECAP *************************************************************************s0 : ok=5 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 s1 : ok=5 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 s2 : ok=5 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
7.在被测试主机上进行验证
# s0主机[root@s0 ~]# mysqlWelcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 3Server version: 5.5.68-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> show databases;+--------------------+| Database |+--------------------+| information_schema || eleme || mysql || performance_schema || test |+--------------------+5 rows in set (0.00 sec)MariaDB [(none)]> use eleme;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedMariaDB [eleme]> show tables;+-----------------+| Tables_in_eleme |+-----------------+| user |+-----------------+1 row in set (0.00 sec)MariaDB [eleme]> select * from user;Empty set (0.00 sec)# s1主机[root@s1 ~]# mysqlWelcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 3Server version: 5.5.68-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> show databases;+--------------------+| Database |+--------------------+| information_schema || eleme || mysql || performance_schema || test |+--------------------+5 rows in set (0.00 sec)MariaDB [(none)]> use eleme;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedMariaDB [eleme]> show tables;+-----------------+| Tables_in_eleme |+-----------------+| user |+-----------------+1 row in set (0.00 sec)