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
相关推荐
Hy行者勇哥9 小时前
用Cursor智能编写Ansible/Terraform脚本,打通CI/CD链路
ci/cd·ansible·terraform
芷栀夏2 天前
飞牛NAS怎么部署Immich?家庭照片自动备份与远程访问教程
服务器·nginx·ansible
悠然南风13 天前
Ansible常见模块总结及LDAP Role 编写与调试
ansible
祺风挽楠22 天前
ansible编辑
网络·ansible
芳心粽伙饭22 天前
Ansible课后作业
ansible
烁34723 天前
Ansible初识
ansible
烁34723 天前
Ansible安装部署调试
ansible
烁34723 天前
Ansible命令
ansible
小义_24 天前
【Ansible】(三)基础配置与连接设置
云原生·ansible
炸炸鱼.1 个月前
Ansible 企业级实战:Playbook 与 Roles 完全指南
网络·ansible