ansible安装文档

Ansible 安装文档

控制端 192.168.174.143
被控端 192.168.174.144
被控端 192.168.174.145
被控端 192.168.174.146
被控端 192.168.174.147

EPEL源yum安装

bash 复制代码
 ansible 官网: https://docs.ansible.com/ansible/latest/
 yum install epel-release  #ansible在epel源里
 yum info ansible  #查看信息
 which ansible
 file /usr/bin/ansible-2.7 #查看文件信息
 ansible --version  #查看版本
 
 yum -y install ansible libselinux-python

配置文件

bash 复制代码
vi /etc/ansible/ansible.cfg
# 在[defaults]是配置文件的一个节头,表示以下所有配置项都属于 defaults 节。没有新增
[defaults]
log_path = /var/log/ansible.log  取消注释

取消SSH主机验证(首次登录输yes)
host_key_checking = False  取消注释

生成密钥

bash 复制代码
 ssh-keygen -t rsa  #在/root/.ssh/目录下生成秘钥
 #被控端:(复制主机端公钥到被控端)
 ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.75.128
 #本机也要操作
 ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.75.130
 
 # 主机清单列表可以指定任何位置 如下:
 vim /root/hosts
 [xixi]
 192.168.174.144
 192.168.174.145
 # 执行root下的主机清单时需要 -i 指定位置 如下:
 ansible -i /root/hosts xixi -m shell -a 'ls /'
 
 vim /etc/ansible/hosts  //主机清单
 [ceshi]   # 按组分
 192.168.174.144
 192.168.174.145
 192.168.174.146
 192.168.174.147
 [test]
 192.168.174.[144:147]  # 表示144-147内的ip
 
 [web:vars]  # 给web组定义一个公共变量,即使没有复制公钥,也可以管理
 ansible_port=22
 ansible_password='123456'
 ansible_user='test'
 [web]
 192.168.174.144
 192.168.174.145
 
 [haha]        # 单独给某个组的机器配置端口和密码,如果后面不跟着ansible_user 参数的话,默认是root 
 192.168.174.146 ansible_port=22 ansible_password='123456' ansible_user='root'
 192.168.174.147
 
 命令使用如下:
 ansible ceshi -m shell -a 'ls /root'
 
 ansible web  -m shell  -a 'touch 1.txt && ls -lh'    #在 test用户下创建文件
 -rw-rw-r--. 1 test test 0 11月 27 13:41 1.txt

执行过程

  1. 加载自己的配置文件(默认/etc/ansible/ansible.cfg)
  2. 加载自己对应的模块(默认command)
  3. 将模块或命令生成临时py文件,并将该文件传至被管理用户(在$HOME/.ansible/tmp/)
  4. 给临时文件执行权限(+x)
  5. 执行并返回结果
  6. 删除临时py文件,退出

相关文件

  • /etc/ansible/ansible.cfg 主配置文件
  • /etc/ansible/hosts 主机清单
  • /etc/ansible/roles/ 角色存放目录

相关工具

  • /usr/bin/ansible 主程序,临时命令工具
  • /usr/bin/ansible-doc 查看配置文档
  • /usr/bin/ansible-galaxy 下载、上传代码货Roles模块到官网平台
  • /usr/bin/ansible-playbook 定制自动化任务
  • /usr/bin/ansible-pull 远程执行命令工具
  • /usr/bin/ansible-vault 文件加密工具
  • /usr/bin/ansible-console 基于Console界面与用户交互的执行工具

利用ansible实现管理的主要方式

  • Ad-Hoc 即利用ansible命令,主要用于临时命令使用场景
  • Ansible-playbook 主要用于长期规划好的,大型项目的场景

命令

ansible-doc

bash 复制代码
#用来显示模块帮助
ansible-doc [options] [module...]
-l, --list      #列出可用模块
-s, --snippet   #显示指定模块的playbook片段

例:
ansible-doc -l
ansible-doc -s ping

ansible

bash 复制代码
ansible <host-pattern> [-m module_name] [-a args]
--version       #显示版本
-m module_name  #指定模块,默认为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的run as用户,默认为root
-K, --ask-become-pass  #提示输入sudo时的口令

# 查看目前所有主机
ansible all --list
# 注:
sudo免密时,命令后面加-b即可,不免密需要加-K手动输入密码
# 例:
ansible x86_7_test -m shell -a 'mkdir /data{1..12}' -b
相关推荐
tyatyatya1 天前
Ansible自动化配置,从入门到实战
运维·自动化·ansible
lbb 小魔仙2 天前
【Linux】Ansible 自动化运维实战:2000+ 节点配置标准化教程
linux·运维·ansible
扑火的小飞蛾5 天前
【Ansible学习笔记01】 批量执行 shell 命令
笔记·学习·ansible
oMcLin5 天前
如何在 Red Hat Linux 服务器上使用 Ansible 自动化部署并管理多节点 Hadoop 集群?
linux·服务器·ansible
linux修理工8 天前
vagrant ubuntu 22.04 ansible 配置
ubuntu·ansible·vagrant
biubiubiu07069 天前
Ansible自动化
运维·自动化·ansible
秋42710 天前
ansible配置与模块介绍
ansible
秋42710 天前
ansible剧本
linux·服务器·ansible
码农101号11 天前
Ansible - Role介绍 和 使用playbook部署wordPress
android·ansible
2301_8000509913 天前
Ansible
运维·ansible