Ansible 操作汇总
ansible安装
基于Ubuntu
1
|
aptitude install ansible #自动根据依赖安装ansible
|
ansible配置
主要有两个 ansible.cfg及 hosts文件
1
2
3
4
5
|
[root@meethong ansible]# ls
ansible.cfg hosts roles
[root@meethong ansible]# pwd
/etc/ansible
[root@meethong ansible]#
|
配置主机更改hosts文件,主要有以下几种配置,根据具体情况而定

ansible操作
host文件配置
1
|
192.168.72.50 ansible_ssh_user=root ansible_ssh_pass=root
|
生成秘钥
分发密钥
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[root@meethong ~]# ansible 192.168.72.50 -Km authorized_key -a "user=root key='{{ lookup('file', '/root/.ssh/id_dsa.pub') }}'"
BECOME password:
192.168.72.50 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"comment": null,
"exclusive": false,
"follow": false,
"key": "ssh-dss AAAAB3NzaC1kc3MAAACBAOGpSSk2aOoP5dG6mXnRpkuCJ3/iiXOmysAhRi/19rHSGZDciqdTUv7cLoSkCu+LStMPpLIVZJsBuCQT+cFbXCTAW+LU4nU/85QyGmUeJYNItr6F1DcZEY+k0TbCskm3UETEQ+r13SvykT2Gq6fgalh71gU7qOgWxGtRsjHMjF1pAAAAFQDrYT/nC1jUS1TO2DPDZs71LEnNBQAAAIALJq0bfR5bfb8H0CRfznq+j87+wFThc8YpHGT160oe32VtgpQX5hgs3vb4umgPobHfVy4Yc9csq9J0YXaP32vDZR9EBfrOmA/Rn1+G6gV7HDcrIvqR3NvHDlBYtnN8e3hNW36fWCiGIrUfwfDkhKft6XD+btQkbVq4ukFzpId5AAAAAIEAv2p2CoQ+bd+V/1PTKmO4Ip7flWkqqiXxSOTgwKxR0KvCDyCOoAT/s5Q+oO52Muo2sFpRqYyPUTBSJ5lPaG/FD7R/FG60pYaBgiay0Lwf+6O98cDfwcz1ObIFWqa6fhag9qFGcNmGycOQK02y1lwS2AS+qFSuYNDlLgc5FkvA7KA= root@meethong",
"key_options": null,
"keyfile": "/root/.ssh/authorized_keys",
"manage_dir": true,
"path": null,
"state": "present",
"user": "root",
"validate_certs": true
}
|
ansible ping模块测试连接
1
2
3
4
5
6
7
8
9
10
|
[root@meethong ~]# ansible 192.168.72.50 -m ping
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
192.168.72.50 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
[root@meethong ~]#
|
ansible 命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
ansible通过ssh实现配置管理、应用部署、任务执行等功能,
建议配置ansible端能基于密钥认证的方式联系各被管理节点
ansible <host-pattern> [-m module_name] [-a args]
ansible +被管理的主机(ALL) +模块 +参数
--version 显示版本
-m module 指定模块,默认为command
-v 详细过程 –vv -vvv更详细
--list-hosts 显示主机列表,可简写 --list
-k, --ask-pass 提示输入ssh连接密码,默认Key验证
-C, --check 检查,并不执行
-T, --timeout=TIMEOUT 执行命令的超时时间,默认10s
-u, --user=REMOTE_USER 执行远程执行的用户
-b, --become 代替旧版的sudo切换
--become-user=USERNAME 指定sudo的runas用户,默认为root
-K, --ask-become-pass 提示输入sudo时的口令
|
Ansible主要组成部分
1
2
3
4
5
6
7
|
ANSIBLE PLAYBOOKS:任务剧本(任务集),编排定义Ansible任务集的配置文件,
由Ansible顺序依次执行,通常是JSON格式的YML文件
INVENTORY:Ansible管理主机的清单 /etc/anaible/hosts
MODULES: Ansible执行命令的功能模块,多数为内置核心模块,也可自定义
PLUGINS: 模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用
API: 供第三方程序调用的应用程序编程接口
ANSIBLE: 组合INVENTORY、API、MODULES、PLUGINS的绿框,可以理解为是ansible命令工具,其为核心执行工具
|
1
2
3
|
利用ansible实现管理的方式:
1> Ad-Hoc 即ansible单条命令,主要用于临时命令使用场景
2> Ansible-playbook 主要用于长期规划好的,大型项目的场景,需要有前期的规划过程
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
Ansible-playbook(剧本)执行过程
将已有编排好的任务集写入Ansible-Playbook
通过ansible-playbook命令分拆任务集至逐条ansible命令,按预定规则逐条执行
Ansible主要操作对象
HOSTS主机
NETWORKING网络设备
注意事项:
执行ansible的主机一般称为主控端,中控,master或堡垒机
主控端Python版本需要2.6或以上
被控端Python版本小于2.4需要安装python-simplejson
被控端如开启SELinux需要安装libselinux-python
windows不能做为主控端
ansible不是服务,不会一直启动,只是需要的时候启动
|