ansible剧本的使用、roles的应用

设置ansible的组

# vim /etc/ansible/hosts
  ​
  ​
  s0 ansible_ssh_host=192.168.2.110 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=1
  ​
  s1 ansible_ssh_host=192.168.2.111 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=1
  ​
  s2 ansible_ssh_host=192.168.2.112 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=1
  ​
  [s]
  s0
  s1
  s2

--使用剧本修改nginx的端口号为80

# vim /etc/ansible/playbook/nginx.yml
  ​
  ---
  -       hosts:           s
          remote_user:     root
          tasks:
          -       name:   卸载httpd
                  yum:    name=httpd   state=absent
  ​
          -       name:   安装nginx
                  yum:    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.conf
                  notify:
                  -       restart nginx
  ​
          -       name:   启动服务
                  service:        name=nginx   state=started  enabled=yes
  ​
          handlers:
                  -       name:   restart nginx
                          service:        name=nginx   state=restarted
  ...
# ansible-playbook /etc/ansible/playbook/nginx.yml

--roles

[root@m0 ~]# cd /etc/ansible/roles
  [root@m0 roles]# mkdir nginx
  [root@m0 roles]# ls
  nginx
  [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
  └── vars
  ​
  6 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.yml
  ​
  6 directories, 4 files
  ​
  [root@m0 nginx]# cd

--下载nginx的主配置文件

# vim /etc/ansible/playbook/test002.yml 
  ​
  ---
  -       hosts:  s
          remote_user:    root
          roles:
                  -       nginx
  ...

运行文件

# 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  

卸载nginx

# ansible s -m yum -a 'name=nginx state=absent'

编辑配置文件-安装nginx

# vim /etc/ansible/roles/nginx/tasks/main.yml 
  ​
  ---
  ​
  -       name:   卸载httpd
          yum:    name=httpd      state=absent
  ​
  -       name:   卸载nginx
          yum:    name=nginx      state=absent
  ​
  -       name:   安装nginx
          yum:    name=nginx      state=present
  ​
  -       name:   启动服务
          service:        name=nginx      state=started   enabled=yes
  ...
  

运行main.yml配置文件

# ansible-playbook /etc/ansible/playbook/test002.yml 

--使用roles搭建lnmp

nginx修改端口为8080

mariadb中创建eleme数据库

创建user表

字段类型约束字段名称
idint主键约束、自增编号
usernamevarchar非空主键账号
passwordvarchar非空主键密码
remarkvarchar没有主键账号权限说明

主配置文件

# vim /etc/ansible/playbook/test003.yml
  ​
  ---
  -       hosts: s
          remote_user: root
          roles:
                  -       mariadb
  ...

拷贝文件nginx且改名为mariadb

[root@m0 ~]# cd /etc/ansible/roles/
  [root@m0 roles]# ls
  nginx
  [root@m0 roles]# cp -r nginx mariadb
  [root@m0 roles]# ls
  mariadb  nginx
  [root@m0 roles]# cd mariadb/
  [root@m0 mariadb]# ls
  files  handlers  meta  tasks  templates  vars

创建script目录

[root@m0 mariadb]# cd ..
  [root@m0 roles]# mkdir script
  [root@m0 roles]# cd script/

写一个数据库的脚本

 [root@m0 script]# vim dbtable.sh
  ​
  #!/bin/bash
  mysql << EOF
  create 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));
  quit
  EOF

修改配置文件

[root@m0 mariadb]# vim /etc/ansible/roles/mariadb/tasks/main.yml
  ​
  ---
  ​
  -       name:   卸载mariadb
          yum:    name=mariadb,mariadb-server,mariadb-devel      state=absent
  ​
  -       name:   安装mariadb
          yum:    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
  ...

运行

[root@m0 script]# cd
  [root@m0 ~]# ansible-playbook /etc/ansible/playbook/test003.yml

在被测试主机上进行验证

# s0主机
  [root@s0 ~]# mysql
  Welcome to the MariaDB monitor.  Commands end with ; or \g.
  Your MariaDB connection id is 3
  Server version: 5.5.68-MariaDB MariaDB Server
  ​
  Copyright (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 names
  You can turn off this feature to get a quicker startup with -A
  ​
  Database changed
  MariaDB [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 ~]# mysql
  Welcome to the MariaDB monitor.  Commands end with ; or \g.
  Your MariaDB connection id is 3
  Server version: 5.5.68-MariaDB MariaDB Server
  ​
  Copyright (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 names
  You can turn off this feature to get a quicker startup with -A
  ​
  Database changed
  MariaDB [eleme]> show tables;
  +-----------------+
  | Tables_in_eleme |
  +-----------------+
  | user            |
  +-----------------+
  1 row in set (0.00 sec)

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值