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
相关推荐
张32315 小时前
Ansible实施任务控制
linux·ansible
张32318 小时前
Ansible Playbook
ansible
张32319 小时前
Ansible文件部署
服务器·ansible
张32319 小时前
Ansible介绍
ansible
热爱Liunx的丘丘人1 天前
Ansible的Playbook案例一
linux·运维·服务器·ansible
小梦爱安全2 天前
Ansible剧本1
java·网络·ansible
WJ.Polar2 天前
Ansible任务控制
linux·运维·网络·python·ansible
热爱Liunx的丘丘人2 天前
PlayBook常用的模块编写
linux·服务器·ansible
淼淼爱喝水2 天前
Ansible Playbook 入门实战:自动化创建 Linux 用户
linux·运维·服务器·网络·ansible
热爱Liunx的丘丘人2 天前
Ansible-doc及常用模块
linux·运维·服务器·ansible