ansible--ansible基础
配置文件
ansible的配置文件只有一个,即ansible.cfg,它可以存在于多个地方,ansible读取配置文件的顺序依次是当前命令执行目录
->用户家目录下的.ansible.cfg
->/etc/ansible.cfg
,先找到哪个就使用哪个。
我这里使用docker作为测试工具,使用冻仁提供的镜像作为线上服务器使用,具体配置可以看链接内的介绍,这里贴出简单操作步骤
// 拉取镜像
docker pull chusiang/ansible-managed-node:centos-7
// 建立并执行容器
docker run --name server1 -d -P chusiang/ansible-managed-node:centos-7
// 查看容易绑定的端口,之后有用
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0a59028c1842 chusiang/ansible-managed-node:centos-7 "/usr/sbin/sshd -D" 2 hours ago Up 2 hours 0.0.0.0:32773->22/tcp server1
添加配置文件
首先建立一个新文件夹,然后创建ansible.cfg文件
mkdir ansible
cd ansible
vi ansible.cfg
// 输入内容
[defaults]
host_key_checking = False // 首次连接是否需要检查key认证
remote_user = docker // 此处为镜像配置好的,其他地方一般不需要指定
inventory = hosts // 存储目标主机分组列表,此处写hosts会从当前目录的hosts文件开始查找
ansible inventory配置
inventory是管理主机信息的配置文件
定义主机和组
inventory可以用一下方式配置
- 直接为ip地址
192.168.0.2
- ip + 端口号
192.168.0.2:22
- 分组,中括号内的内容标识一个分组的开始,气候的主机均属于该组成员,空行后的主机仍属于该组
// 此处例子为实际使用例子
vi hosts
// 输入
server1 ansible_ssh_host=127.0.0.1 ansible_ssh_port=32773 ansible_ssh_pass=docker
[local]
server1
// 如果有多台主机可以这么设置,[1:10]表示1~10之间的所有数字(字母同理)
server[1:10]
ansible正则
基本用法
ansible <pattern> -m <module_name> -a <arguments>
一些基本模式
All(全量)匹配
匹配所有主机,all
或*
号功能相同,如下例
// 检测所有主机存活情况
ansible all -m ping
ansible "*" -m ping
逻辑或(or)匹配
如果希望同时对多台主机或多个组执行,相互之间用“:”分隔。
ansible "server1:server2" -m ping
逻辑非(!)匹配
主要针对多重条件的匹配规则
webservers:!phoenix
逻辑与(&)匹配
也主要针对多重条件的匹配规则
webservers:&staging
模糊匹配
使用*通配符表示一个或多个字符
server*
域切割
可以直接使用python语法的切割
正则表达式
使用"~"开始标识正则匹配
参考书目:《Ansible权威指南》