ansible入门
ansible入门
简介
ansible是什么:
ansible 自动化运维工具,基于python开发,实现了批量系统配置、批量程序部署、批量运行命令等功能
客户端不需要安装client/agents,因为他们是基于ssh来和远程主机通讯的。目前已被红帽收购
ansible任务执行模式:
adhoc : 使用单个模块,支持批量执行单条命令
playbook: 通过多个task集合完成一类功能ansible命令执行过程:
- 加载自己的配置文件,默认
/etc/ansible/ansible.cfg;- 查找对应的主机配置文件,找到要执行的主机或者组;
- 加载自己对应的模块文件,如 command;
- 通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将该文件传输至远程服务器;
- 对应执行用户的家目录的
.ansible/tmp/XXX/XXX.PY文件;- 给文件 +x 执行权限;
- 执行并返回结果;
- 删除临时py文件,
sleep 0退出;
安装
# ansible安装常用的两种方式,yum安装和pip程序安装
# pip(python的包管理模块)安装
yum install python-pip
pip install ansible
# yum安装
yum install epel-release -y
yum install ansible -y
配置文件说明
# ansible运行时配置文件查找顺序
1、 检查环境变量ANSIBLE_CONFIG指向的路径文件(export ANSIBLE_CONFIG=/etc/ansible.cfg)
2、 ~/ansible.cfg, 检查当前目录下的ansible.cfg配置文件
3、 /etc/ansible.cfg 检查etc目录的配置文件
# ansible配置文件常见参数说明
inventory = /etc/ansible/hosts # 这个参数表示资源清单inventory文件的位置
library = /usr/share/ansible # 指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
forks = 5 # 并发连接数,默认为5
sudo_user = test # 设置默认执行命令的用户,普通用户需要有权限或者sudo权限
remote_port = 22 # 指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全
host_key_checking = False # 设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例
timeout = 60 # 设置SSH连接的超时时间,单位为秒
log_path = /var/log/ansible.log # 指定一个存储ansible日志的文件(默认不记录日志)
roles_path=roles # 指定roles目录
#remote_tmp = /tmp/ # 指定远端运行目录
[privilege_escalation] # 提权选项设置
become=True # 是否提权
become_method=sudo # 提权方式
become_user=root # 提权到root用户的权限
become_ask_pass=True # 使用需提权用户的密码
ansible主机清单(inventory文件)
# 定义一个主机名[组名]把地址或主机名加进去
[test01]
192.168.1.1
192.168.1.2
test1.env.com
# 指定统一的变量设置ssh端口
[test01:vars]
ansible_ssh_port=9922
[mysql]
#变量值不一样时,也可以单独指定变量信息
192.168.2.1 ansible_ssh_port=2122
192.168.2.2 ansible_ssh_port=2222
[es]
# 连续的地址可以简写表示10到25的数字
192.168.3.[10:25]
[es:vars]
ansible_ssh_port=3122
ansible常用命令
/usr/bin/ansible Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行
/usr/bin/ansible-doc Ansible 模块功能查看工具
/usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块 的官网平台,基于网络的
/usr/bin/ansible-playbook Ansible 定制自动化的任务集编排工具
/usr/bin/ansible-pull Ansible远程执行命令的工具,拉取配置而非推送配置(使用较少,海量机器时使用,对运维的架构能力要求较高)
/usr/bin/ansible-vault Ansible 文件加密工具
/usr/bin/ansible-console Ansible基于Linux Consoble界面可与用户交互的命令执行工具
ansible-doc命令
# 查看全部模块的信息
ansible-doc -l
# 获取指定模块的使用帮助
ansible-doc 模块名
ansible-doc -s 模块名
ansible命令
# 命令格式
ansible <host-pattern> [-f forks] [-m module_name] [-a args]
# 相关参数
-a MODULE_ARGS #模块的参数,如果执行默认COMMAND的模块,即是命令参数,如: “date”,“pwd”等等
-k,--ask-pass #ask for SSH password。登录密码,提示输入SSH密码而不是假设基于密钥的验证
--ask-su-pass #ask for su password。su切换密码
-K,--ask-sudo-pass #ask for sudo password。提示密码使用sudo,sudo表示提权操作
--ask-vault-pass #ask for vault password。假设我们设定了加密的密码,则用该选项进行访问
-B SECONDS #后台运行超时时间
-C #模拟运行环境并进行预运行,可以进行查错测试
-c CONNECTION #连接类型使用
-f FORKS #并行任务数,默认为5
-i INVENTORY #指定主机清单的路径,默认为/etc/ansible/hosts
--list-hosts #查看有哪些主机组
-m MODULE_NAME #执行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数
-o #压缩输出,尝试将所有结果在一行输出,一般针对收集工具使用
-S #用 su 命令
-R SU_USER #指定 su 的用户,默认为 root 用户
-s #用 sudo 命令
-U SUDO_USER #指定 sudo 到哪个用户,默认为 root 用户
-T TIMEOUT #指定 ssh 默认超时时间,默认为10s,也可在配置文件中修改
-u REMOTE_USER #远程用户,默认为 root 用户
-v #查看详细信息,同时支持-vvv,-vvvv可查看更详细信息
ansible配置公私钥
# ansible基于ssh协议实现的,所以可以配置免密登录
# ssh-keygen、ssh-copy-id
# pssh结合sshpass命令批量传输

浙公网安备 33010602011771号