ansible权威指南笔记(⼀)——安装配置、常⽤命令与模块⼀、简介
ansible基于Python开发,主要⽤于批量系统配置、批量程序部署、批量运⾏命令等。
架构如下
⼯作原理
1. 主要管理⽅式
Ad-Hoc:即ansible单条命令,主要⽤于临时命令使⽤场景
Ansible-playbook:即ansible脚本,主要⽤于会反复使⽤的场景
Ansible-Roles:简单来讲,roles就是通过分别将变量、⽂件、任务、模板等放置于单独的⽬录中,并可以快速include它们的机制。
类似按项⽬管理的代码,⽤于层次性、结构化地组织playbook。
2. 注意事项
ansible的安装主机⼀般称为主控端,中控,master或堡垒机
ansible 2.4版本开始,主控端Python版本需要2.6或以上(CentOS 5 Python版本为 2.4.3)
被控端Python版本⼩于2.4的,需要安装python-simplejson
被控端如开启SELinux需要安装libselinux-python
windows不能做为主控端
ansible不是服务,只在需要的时候启动(本质是Python脚本)
⼆、安装ansible
1. yum安装
yum install epel-release -y
yum install ansible -y
2. 编译安装
⼆进制包下载
yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto tar xf ansible-1.5.
cd ansible-1.5.4
python setup.py build
python setup.py install
mkdir /etc/ansible
cp -r examples/* /etc/ansible
3. git⽅式
git clone git://github/ansible/ansible.git --recursive
cd ./ansible
source ./hacking/env-setup
4. pip安装
yum install python-pip python-devel
yum install gcc glibc-devel zibl-devel rpm-bulid openssl-devel
pip install --upgrade pip
pip install ansible --upgrade
5. 验证安装
ansible --version
三、主要⽂件
1. 配置⽂件ansible.cfg
vim /etc/ansible/ansible.cfg
[defaults]
#inventory = /etc/ansible/hosts # 主机列表配置⽂件
#library = /usr/share/my_modules/ # 库⽂件存放⽬录
#remote_tmp = $HOME/.ansible/tmp # 临时py命令⽂件存放在远程主机⽬录
#local_tmp = $HOME/.ansible/tmp # 本机的临时命令执⾏⽬录
git常用指令#forks = 5 # 默认并发数,同时可以执⾏5次
#sudo_user = root # 默认sudo ⽤户
#ask_sudo_pass = True # 每次执⾏ansible命令是否询问ssh密码
#ask_pass = True # 每次执⾏ansible命令是否询问ssh⼝令
#remote_port = 22 # 远程主机的端⼝号(默认22)
# 建议调整项
host_key_checking = False # 检查对应服务器的host_key,建议取消注释
log_path=/var/log/ansible.log # ⽇志⽂件,建议取消注释
module_name = command # 默认模块,可以改为shell
2. 主机清单 /etc/ansible/hosts
⽂件位置可以任意修改,执⾏命令时指定 -i host⽂件位置 即可。
可以以多种⽅式指定host主机
可以分组指定,可以写ip、主机名
[testgroup]
192.168.56.40
192.168.56.41
[test41]
host001
host002
可以⽤正则表达式
[webservers]
www[1:100].example # ip: 1-100
[dbservers]
db-[a:f].example # dba - dbf
指定主机参数(⽤户、密码、端⼝、是否sudo等)
[testgroup]
10.192.168.101 ansible_ssh_user=dba ansible_become=true ansible_become_pass='xxxxx!' 10.192.168.137 ansible_ssh_user=dba ansible_become=true ansible_become_pass='xxxxx!'
ansible可根据正则表达式调⽤主机
ansible "*" -m ping # (*表⽰所有主机)
ansible 192.168.1.* -m ping
ansible "*srvs" -m ping
还可以按逻辑关系确定调⽤主机
webservers和dbservers组中机器都被调⽤(逻辑或)
ansible webservers:dbservers -m win_ping
在webservers组中但不在dbsersers中的调⽤(逻辑⾮)
ansible webservers:!dbservers -m win_ping
在webservers组中并且在dbservers组中的才会调⽤(逻辑与)
ansible webservers:&dbservers -m win_ping
四、主要命令简介
/usr/bin/ansible 主程序,临时命令执⾏⼯具
/usr/bin/ansible-doc ⽂档⼯具,查看模块功能及⽤法
/usr/bin/ansible-playbook 执⾏playbook
/usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块的官⽹平台/usr/bin/ansible-vault ⽂件加密⼯具
1. ansible命令
ansible <host-pattern> [-m module_name] [-a args]
ansible +被管理的主机(ALL) +模块 +参数
--help 显⽰帮助
--version 显⽰版本
-m module 指定模块,默认为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的runas⽤户,默认为root
-K, --ask-become-pass 提⽰输⼊sudo时的⼝令
2. ansible-doc
显⽰模块帮助
ansible-doc [options] []
-a 显⽰所有模块的⽂档
-l, --list 列出可⽤模块
-s, --snippet 显⽰指定模块的playbook⽚段(简化版,便于查语法)
3. ansible-playbook
⽤于执⾏playbook⽂件,系列后⾯⽂章会详细介绍
l
l
#hello world yml file
- hosts: websrvs
remote_user: root
tasks:
- name: hello world
command: /usr/bin/wall hello world
4. ansible-galaxy
# 列出所有已安装的galaxy
ansible-galaxy list
# 安装galaxy
ansible-galaxy dis
# 删除galaxy
ansible-galaxy dis
5. ansible-vault
管理、加解密playbook⽂件(例如其中包含密码时)
ansible-vault [create|decrypt|edit|encrypt|rekey|view]
# 加密
ansible-vault l
# 解密
ansible-vault l
# 查看
ansible-vault l
# 编辑加密⽂件
ansible-vault l
# 修改⼝令
ansible-vault l
# 创建新⽂件
ansible-vault l
6. 命令执⾏过程
执⾏步骤
加载配置⽂件 默认/etc/ansible/ansible.cfg
加载对应的模块⽂件,如command
通过ansible将模块或命令⽣成对应的临时py⽂件,并将该⽂件传输⾄远程服务器⽬录:对应执⾏⽤户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY⽂件
给⽂件+x执⾏权限
执⾏并返回结果
删除临时py⽂件(命令中途执⾏失败也会删掉),sleep 0退出
执⾏状态
绿⾊:执⾏成功并且不需要做改变的操作
黄⾊:执⾏成功并且对⽬标主机做变更
红⾊:执⾏失败
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论