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
相关推荐
Linux运维技术栈5 小时前
Ansible(自动化运维)环境搭建及ansible-vault加密配置
运维·自动化·ansible
vvw&15 小时前
如何在 Ubuntu 22.04 上安装 Ansible 教程
linux·运维·服务器·ubuntu·开源·ansible·devops
☆凡尘清心☆2 天前
CentOS-stream-9安装ansible
linux·centos·ansible
墨水\\2 天前
Ansible---playbook剧本
ansible
墨水\\3 天前
Ansible部署及基础模块
服务器·网络·ansible
七七powerful3 天前
ansible play-book玩法
linux·服务器·ansible
Karoku0664 天前
【自动化部署】Ansible循环
linux·运维·数据库·docker·容器·自动化·ansible
W u 小杰4 天前
Ansible基本用法
服务器·网络·ansible
运维小文4 天前
ansible剧本快速上手
linux·运维·python·自动化·ansible·幂等性·剧本