一、介绍:

Ansible默认通过 SSH 协议管理机器,所以只要机器上安装了Python都可运行ansible;ansible是基于模块工作,主要框架包括:
1、连接插件connection plugins:负责和被监控端实现通信;
2、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
3、各种模块核心模块、command模块、自定义模块
4、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

二、使用yum安装ansible:

  1. yum -y install gcc zlib zlib-devel openssl openssl-devel ansible
  2. 验证是否安装成功:
  3. ansible --version

三、配置ansible无需秘钥远程登录节点服务器:

  1. 1、创建公钥:
  2. ssh-keygen -t rsa(无密码直接回车即可)
  3. 2、将公钥传到节点服务器:
  4. ssh-copy-id -i root@IP

四、ansible常用命令:

1、在指定主机上执行命令

ansible '*' -m command -a 'date'

2、指定节点上的权限,修改属组和属主

ansible '*' -m file -a "dest=/tmp/t.sh mode=755 owner=root group=root"

3、在指定节点上创建一个名为test,gid为2018的组

ansible all -m group -a 'gid=2018 name=test'

4、在指定节点上创建名为test,组为test的用户

ansible all -m user -a 'name=test groups=test state=present'

5、在指定节点上删除名为test的用户

ansible all -m user -a 'name=test groups=test remove=yes'

6、在指定节点上安装服务

ansible all -m yum -a "state=present name=httpd"

7、在指定节点上启动服务,并开机自启

ansible all -m service -a 'name=httpd state=started enabled=yes'

8、检查主机连接

ansible all -m ping

9、执行主控端脚本

ansible '*' -m script -a '/root/test.sh'

10、将主控方/root/a目录推送到指定节点的/tmp目录下

ansible all -m synchronize -a 'src=/root/a dest=/tmp/ compress=yes'

11、将0.0.0.0节点的/tmp/a目录拉取到主控节点的/root目录下

ansible 0.0.0.0 -m synchronize -a 'mode=pull src=/tmp/a dest=/root/'

12、在指定服务器上修改文件,在文件末尾添加一行

ansible all -m lineinfile -a "dest=/root/test.txt line='hahaha'"

13、执行主控端脚本

ansible '*' -m script -a '/root/test.sh'

五、ansible批量部署服务文件架构:

hosts/ \\Ansible 可同时操作属于一个组的多台主机,组和主机之间的关系通过 inventory 文件配置. 默认的文件路径为 /etc/ansible/hosts
roles/ \\ansible所有的信息都放到此目录下面对应的目录中
└── tomcat  \\服务名称
    ├── default  \\为当前角色设定默认变量时使用此目录,应当包含一个main.yml文件;
    ├── files  \\存放有copy或script等模块调用的文件
    ├── handlers \\此目录总应当包含一个main.yml文件,用于定义各角色用到的各handler
    ├── meta \\应当包含一个main.yml,用于定义角色的特殊设定及其依赖关系;1.3及以后版本支持
    ├── tasks \\至少包含一个名为main.yml的文件,定义了此角色的任务列表,可使用include指令
    ├── templates \\template模块会自动在此目录中寻找Jinja2模板文件
    └── vars  \\应当包含一个main.yml文件,用于定义此角色用到的变量
site.yml

附:(批量部署tomcat服务 Centos7.0)

1、创建批量部署文件架构

mkdir -pv  /etc/ansible/tomcat/{files,tasks,templates,vars,handlers,meta,default}
touch /etc/ansible/site.yml

2、定义节点服务器的ip地址

vim /etc/ansible/hosts
[tomcat] (名称随便起,为了后面调用)
10.0.0.1
10.0.0.2

3、编写执行文件

vim /etc/ansible/site.yml
- name: Install tomcat application prod enviroment
  hosts: tomcat
  remote_user: root
  roles:
    - tomcat

4、编写任务执行文件(注意文件中包名和路径已实际为准)

vim /etc/ansible/tomcat/tasks/main.yml
- name: 将tomcat压缩包copy到远程主机apache-tomcat-7.0.68.tar.gz
  copy: src=/usr/src/apache-tomcat.tar.gz dest=/usr/src

- name: 解压tomcat压缩包
  shell: chdir=/usr/src/ tar zxvf apache-tomcat.tar.gz

- name: tomcat压缩包 重新命名为 tomcat
  shell: chdir=/usr/src/ mv apache-tomcat-8.5.34   apache-tomcat

- name: 将jdk压缩包copy到远程主机
  copy: src=/usr/src/jdk1.8.tar.gz dest=/usr/src

- name: 解压jdk
  shell: chdir=/usr/src/ tar xzvf jdk1.8.tar.gz

- name: 重命名为jdk1.8
  shell: chdir=/usr/src  mv jdk1.8.0_191  jdk1.8

5、执行批量部署

ansible-playbook -i hosts site.yml