Linux九阴真经之九阴白骨爪残卷4(自动化运维之ansible)

ansible是什么?


扫描二维码关注公众号,回复: 1104862 查看本文章

1、模块化:调用特定的模块,完成特定任务


2、有Paramiko,PyYAML,Jinja2(模板语言)三个关键模块


3、支持自定义模块


4、基于Python语言实现


5、部署简单,基于python和SSH(默认已安装),agentless


6、安全,基于OpenSSH


7、’支持playbook编排任务


8、幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况


9、无需代理不依赖PKI(无需ssl)


10、可使用任何编程语言写模块


11、YAML格式,编排任务,支持丰富的数据结构

ansible 配置文件

ansible 配置文件                                       /etc/ansible/ansible.cfg (一般保持默认)

主机列表配置文件                                     /etc/ansible/hosts

库文件存放目录                                         /usr/share/my_modules

检查对应服务器的host_key,建议启用,取消注释

日志文件                                                    /var/log/ansible.log

临时py命令文件存放在远程主机目录        $HOME/.ansible/tmp

本机的临时命令执行目录                           $HOME/.ansible/tmp

默认并发数                                                 forks = 5

默认sudo 用户                                            sudo_user = root

每次执行ansible命令是否询问ssh密码       ask_sudo_pass = True

ask_sudo_pass = True

remote_port = 22

基础配置

实验环境:一台centos7.4的主控机和2台centos6.9的受控机。

这三台IP地址依次分别如下

192.168.95.2

192.168.95.3

192.168.95.129

连接一台受控主机,以K的方式验证,如不使用 -k 功能,则不能连接

同时连接两台受控机,在IP地址后面再添加一条即可,用逗号隔开

我们发现,无论是连接一台或者多台,都要输入受控机的密码,这样做是不是很麻烦呢? 到这里就有人想到用openssl 做一个 基于key 的免密认证 ,下次登录的时候就不用再输入密码了,真的是很聪明呢!

[root@centos7 ~]#ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.95.3

[root@centos7 ~]#ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.95.129

若感觉SSH连接太慢,则更改/etc/ssh/sshd_conf 文件 

 ansible系列命令

ansible-doc: 显示模块帮助,相当于man

-a 显示所有模块的文档


-l, --list 列出可用模块


-s, --snippet 显示指定模块的playbook片段

示例:
ansible-doc –l 列出所有模块


ansible-doc ping 查看指定模块帮助用法


ansible-doc –s ping 查看指定模块帮助用法

ansible通过ssh实现配置管理、应用部署、任务执行等功能,建议配置ansible端能基于密钥认证的方式联系各被管理节点

ansible <host-pattern> [-m module_name] [-a args]
--version 显示版本
-m module 指定模块,默认为command
-v 详细过程 –vv -vvv更详细
--list-hosts 显示主机列表,可简写—list
-k, --ask-pass 提示连接密码,默认Key验证
-K, --ask-become-pass 提示输入sudo
-C, --check 检查,并不执行
-T, --timeout=TIMEOUT 执行命令的超时时间,默认10s
-u, --user=REMOTE_USER 执行远程执行的用户
-b, --become 代替旧版的sudo 切换

ansible的Host-pattern

匹配主机的列表
All :表示所有Inventory中的所有主机
ansible all –m ping


* :通配符

ansible “*” -m ping
ansible 192.168.1.* -m ping
ansible “*srvs” -m ping


或关系
ansible “websrvs:appsrvs” -m ping
ansible “192.168.1.10:192.168.1.20” -m ping

逻辑与
ansible “websrvs:&dbsrvs” –m ping 
在websrvs组并且在dbsrvs组中的主机


逻辑非
ansible ‘websrvs:!dbsrvs’ –m ping
在websrvs组,但不在dbsrvs组中的主机


综合逻辑
ansible ‘websrvs:dbsrvs:&appsrvs:!ftpsrvs’ –m ping
正则表达式


ansible “websrvs:&dbsrvs” –m ping
ansible “~(web|db).*\.magedu\.com” –m ping


12、较强大的多层解决方案

猜你喜欢

转载自www.cnblogs.com/huxiaojun/p/9108218.html