ansible入门

ansible入门

简介

ansible是什么:

ansible 自动化运维工具,基于python开发,实现了批量系统配置、批量程序部署、批量运行命令等功能
客户端不需要安装client/agents,因为他们是基于ssh来和远程主机通讯的。目前已被红帽收购

ansible任务执行模式:

adhoc : 使用单个模块,支持批量执行单条命令
playbook: 通过多个task集合完成一类功能

ansible命令执行过程:
  1. 加载自己的配置文件,默认/etc/ansible/ansible.cfg
  2. 查找对应的主机配置文件,找到要执行的主机或者组;
  3. 加载自己对应的模块文件,如 command;
  4. 通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将该文件传输至远程服务器;
  5. 对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY文件;
  6. 给文件 +x 执行权限;
  7. 执行并返回结果;
  8. 删除临时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命令批量传输
posted @ 2024-08-01 09:23  itk  阅读(64)  评论(0)    收藏  举报