Ansible使用
一. 入门
1. 添加一台机器
1)编辑/etc/ansible/hosts文件
2)添加本机的public SSH key 到目标机器的authorized_keys
3)添加本机的私钥到Ansible (可以省略)
4)运行ansible all -m ping 测试是否添加成功
2. Ansible命令格式
1)ansible命令主体——ansible/ansible-playbook
2) 被操作的目标主机的正则表达式
3)指定要使用的模块
4)传入的参数
3.Ansible执行命令的流程图如下:
4. Ansible命令详解
-a: 指定传入模块的参数
-C -D:两个一起使用,检查hosts规则文件的修改
-I:限制匹配规则的主机数
--list-hosts :显示所有匹配规则的主机数
-m -M:指定所使用的模块和模块的路径
--syntax-check:检查语法
-v:显示详细的日志
二. 使用Ansible Inventory
Inventory
Ansible可以同时操作属于一个组的多台主机,组和主机之间的关系通过Inventory文件配置。默认的文件路径为/etc/ansible/hosts
中文:库存
作用:分组
示例:
[]中的是组名,一个主机可以属于不同的组。如:192.168.146.5可以同时属于web组和mySQL组。这时,指定web组和mySQL组都可以操作这台机器。
1. 自定义链接端口
在编写hosts文件时,在域名或者ip后,加上冒号端口。
如:192.168.146.5:5000
one.example.com:6000
2. 起别名,不用root用户登录
如: jumple ansible_ssh_port=5555 ansible_ssh_host=192.168.146.5 ansible_ssh_user=paas
3. 如果机器太多,但是时连续的,写起来比较麻烦,可以通过以下方式写
如:
[vim]
vim[1:50].example.com
vim[a-f].example.com
4. Inventory参数选项
ansible_ssh_hosts
ansible_ssh_port
ansible_ssh_user
ansible_ssh_pass ssh 密码
ansible_sudo_pass sudo 密码
ansible_sudo_exe
ansible_connection 与主机的连接类型。比如:local,ssh或者paramiko
ansible_ssh_private_key_file
ansible_shell_type 目标主机的shell类型
ansible_pyton_interpreter
三. Ansible的Patterns
在Ansible中,Patterns是指我们通过类正则表达式的方式,决定与哪台主机进行交互。
1. 所有hosts主机:all 或者*
2.通过域名或者ip指定一台机器
3.指定一组连续的机器
如:ansible 192.168.1.* -m ping 指定192.168.1/24段的所有机器
4.指定一组不相关的机器
如:ansible one.example.com:two.example.com -m ping 指定one two两台机器
四. Ansible的Ad-Hoc
临时命令,类似与shell命令
1. 指定用户执行shell命令
ansible web -a "/usr/bin/foo" -u username
2. 使用sudo
ansible web -a "/usr/bin/foo" -u username --sudo[--ask-sudo-pass]
3. 文件管理
创建文件夹:ansible web -m file -a "dest=/path/to/c mode=755 owner=mdehaan group=mdehaan state=directory"
拷贝文件:ansible web -m copy -a "src=/etc/hosts dest=/tmp/hosts"
4. 软件包管理
确认一个软件包已经安装,但不去升级
ansible web -m yum -a "name=acme state=present"
确认一个软件包的安装版本:
ansible web -m yum -a "name=acme-1.5 state=present"
确认一个软件包还没有安装:
ansible web -m yum -a "name=acme state=absent"
5. 其他模块
git模块:git相关
service模块:系统服务相关
setup模块: 系统环境相关
如:如何执行一个耗时的任务
ansible all -B 3600 -P 0 -a "/usr/bin/long_running_operation --do-stuff"
-B 3600 表示最多运行60分钟,-P 0 表示不获取状态
ansible all -B 1800 -P 60 -a "/usr/bin/long_running_operation --do-stuff"
-B 1800 表示最多运行30分钟,-P 60 表示每隔一分钟获取一次状态
五. 了解Ansible Playbook简介
Playbook可用于声明配置,在Playbook中以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤,并且可以同步或者异步的发起任务。