Ansible中使用的不同角色(使用者,Ansible工具集,作用对象) lnventory是Ansible管理主机信息的配置文件,默认存放在/etc/ansible/hosts中。 Ansible工具集包含(lnventrol,Modules,Pluginx和APL) lnventrol:管理主机的清单 Modules:执行命令模块 APl:接口 Ansible:核心执行工具 直接实验! 三台linux服务器,其中一台Ansible服务器。 分别为192.168.1.1 192.168.1.2 192.168.1.3 以一台为例,关闭防火墙,selinux, 服务器上配置如下: 一,yum安装Ansible 二,进入配置文件加上节点ip vim /etc/ansible/hosts 管理的主机ip 三,创建ssh免交互式登录(就是直接登录不需要密码) (1)从ansible主机上生成密钥对 (2)复制公钥到俩个要管理的主机(这里就演示一个) 然后输入:ssh 192.168.1.2直接就能切换过去,不需要密码 (3)检查所有之际是否存活,命令如下 ·一般会用三种颜色来表示执行的结果:红色,绿色 其中:红色表示执行过程有异常,表示执行后目标有变化,绿色表示执行成功且没有对目标主机做修改。 (4)command模块 command模块在远程主机执行命令,不支持管道符,重定向等shell的特性 显示出俩个主机的用户 (5)shell模块 shell模块在远程主机执行命令,和command模块的区别在于它支持shell特性,如管道符,重定向等 web是清单里面包括了俩个主机(可以多个,在清单里添加就可以)在俩太主机/tmp下创建了俩个HELLOW,txt的文件 (6)copy模块 用于复制指定主机的文件到别的主机 dest:指出目标文件的位置, src:指出源文件的路径 在本主机上创建个目录直接复制到俩个节点上的/tmp下 (7)hostname模块 用于远程管理主机的主机名 把主机名改为了asd (8)yum模块 用于对远程主机管理程序包前提要安装的主机必须配置好yum,这只是提供命令远程,比如安装http,命令如下, state=(present,latest,absent )(安装,安装最新,卸载) (9)service模块 用与管理远程主机上的服务,开启,关闭,查看或开机自启 (10)user模块 用于管理远程主机的用户账号比如创建用户,uid号,用户的组,用户的附加组 四,Playbook配置文件 编写脚本来管理远程主机 ansible脚本必须对齐 提前先修改一下配置文件:vim /etc/ansible/hosts 标准的 这是语法检测,显示下面的意思是没有错误 这是创建用户的脚本,如下:---
- hosts: web1 remote_user: root tasks: - name: adduser user: name=user2 state=present tags: - aaa - name: addgroup group: name=root system=yes tags: - bbb
- hosts: web2 remote_user: root tasks: - name: copy file to web copy: src=/etc/passwd dest=/home tags: - ccc ... 执行脚本 五,触发器 编写脚本更改远程主机的端口号并重新启动
- hosts: web1 remote_user: root tasks: - name: change port command: sed -i 's/Listen\ 80/Listen\ 8080/g' /etc/httpd/conf/httpd.conf notify: - restart httpd server handlers: - name: restart httpd server service: name=httpd state=restarted ... 六,角色 角色一般存放在/etc/ansible/roles/目录,比如编写一个创建数据库,在数据库中创建个表, 首先创建多个目录来存放 然后进入mariadb文件夹中的tasks创建一个脚本 内容为:
- name: install mariadb yum: name=mariadb-server state=present
- name: move config file shell: "[ -e /etc/my.cnf ]&& mv /etc/my.cnf /etc/my.cnf.bak"
- name: provide a new config file copy: src=my.cnf dest=/etc/my.cnf
- name: reload mariadb shell: systemctl restart mariadb
- name: create database testdb
shell: mysql -u root -e "create database testdb;grant all on testdb.* to'test'@'192.168.8.%' identified by 'test123';flush privileges;"
notify:
- restart mariadb ... 句号表示 - 然后进入hanglers文件夹中编写和脚本 内容为
- name: restart mariadb service: name=mariadb state=restarted ... 再进入files文件夹中复制mysql配置文件 最后进入ansible文件夹中创建脚本 最后启动脚本 俩个主机就有mysql数据库里面有一个testdb的表 实验完成