Ansible简单配置篇

ansible自动化工具只需要在一台机器上安装,其他机器不需要安装任何东西,这就是ansible比puppet, saltstck方便的地方。ansible的特点有哪些呢?下面为你逐个介绍:
(1)、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
(2)、批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
(3)、使用python编写,维护更简单;
(4)、基于SSH工作;
(5)、支持文件同步并且对修改之前的文件进行备份,支持回滚;

官方原文档: https://docs.ansible.com/ansible/index.html
中文翻译版:http://www.ansible.com.cn/index.html

简单示例

1
2
3
4
5
6
7
8
9
10
vi /etc/ansible/hosts

[ts]
192.168.1.106
执行命令 ansible ts -m ping

192.168.1.106 | success >> {
"changed": false,
"ping": "pong"
}

主机或组规则

目录 /etc/ansible/hosts

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Ex 1: 未分组的主机.

green.example.com
blue.example.com
192.168.100.1
192.168.100.10

#自定义webservers组
[webservers]
alpha.example.org
beta.example.org
192.168.1.100
192.168.1.110
#使用正则表达式
www[001:006].example.com

分离主机与组的特定数据,Ansible支持将/etc/ansible/hosts定义的主机名与变量单独剥离出来放到指定存放文件中,以YAML格式保存

1
2
/etc/ansible/group_vars/
/etc/ansible/host_vars/

模块应用

远程命令模块

1
2
3
ansible dbserver -m command -a "ls /"
ansible dbserver -m script -a "ats.sh start"
ansible dbserver -m shell -a "ats.sh"

复制模块

1
ansible dbserver -m copy -a "src=/1.txt dest=/data/  owner=root  group=root  mode=777"

查看文件状态模块

1
ansible dbserver -m stat -a "path=/data/1.txt"

URL下载模块

1
ansible dbserver -m get_url -a "url=http://letong.me   dest=/data/  mode=777  force=yes"

yum模块

1
ansible dbserver -m yum -a "name=git state=latest"

service模块

1
ansible dbserver -m service -a "name=httpd state=restarted"

user模块

1
2
ansible dbserver -m user -a "name=letong comment='Hello letong' "
ansible dbserver -m user -a "name=letong state=absent remove=yes"

mount模块

1
ansible dbserver -m mount -a "name=/data  src=/dev/sdb1  fstype=ext4  opts=ro  state=present"

cron模块

1
ansible ts -m cron -a "name='ls dir'  hour='5,2'  job='ls -l'"