当前位置 : 主页 > 网络安全 > 测试自动化 >

自动化运维工具ansible简单介绍

来源:互联网 收集:自由互联 发布时间:2021-06-19
一.Ansible介绍 Ansible 简单的说是一个配置管理系统(configuration management system)。你只需要可以使用 ssh 访问你的服务器或设备就行。它也不同于其他工具,因为它使用推送的方式,而不是像
一.Ansible介绍
Ansible 简单的说是一个配置管理系统(configuration management system)。你只需要可以使用 ssh 访问你的服务器或设备就行。它也不同于其他工具,因为它使用推送的方式,而不是像 puppet 等 那样使用拉取安装agent的方式。ansible可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作。
? 模块化:调用特定的模块,完成特定任务
? 有Paramiko,PyYAML,Jinja2(模板语言)三个关键模块
? 支持自定义模块
? 基于Python语言实现
? 部署简单,基于python和SSH(默认已安装),agentless
? 安全,基于OpenSSH
? 支持playbook编排任务
? 幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况
? 无需代理不依赖PKI(无需ssl)
? 可使用任何编程语言写模块
? YAML格式,编排任务,支持丰富的数据结构
? 较强大的多层解决方案

工作原理

各个模块介绍
PLAYBOOKS:任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YML文件

INVENTORY:Ansible管理主机的清单/etc/anaible/hosts

MODULES:Ansible执行命令的功能模块,多数为内置的核心模块,也可自定义,ansible-doc –l 可查看模块

PLUGINS:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用

API:供第三方程序调用的应用程序编程接口

ANSIBLE: 组合INVENTORY、 API、 MODULES、PLUGINS的绿框,可以理解为是ansible命令工具,其为核心执行工具

二.安装
1.环境
redhat6.5
server1 190.168.3.241
server2 190.168.3.242
server3 190.168.3.243

server1主控制模块
[[email protected] ansible]# yum install -y epel-relase

yum instll ansible -y

2.配置 vim hosts

可以写域名,需要dns解析

后面还可以加配置参数
举例:
[test]
190.168.3.242 ansible_ssh_port=2222 ansible_ssh_user=manager 被管理主机端口号和用户
190.168.3.243 ansible_ssh_private_key_file=/home/example/.ssh/aws.pem 指定key文件

host_key_check=False 跳过ssh连接过程中要输入的yes/no

3.简单命令练习

ansible <host-pattern> [-m module_name] [options]
指令 匹配规则的主机清单 -m 模块名 选项

--version 显示版本
-a 模块参数(如果有)
-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 执行远程执行的用户
-U, SUDO_USER, --sudo-user 指定sudu用户
-b, --become 代替旧版的sudo 切换
ansible-doc: 显示模块帮助
ansible-doc [options] [module...]

-a 显示所有模块的文档
-l, --list 列出可用模块
-s, --snippet 显示指定模块的简要说明

[[email protected] ansible]#ansible -i hosts server -u root -m command -a ‘ls /root‘ -k
190.168.3.242 | SUCCESS | rc=0 >>
anaconda-ks.cfg
install.log
install.log.syslog

190.168.3.243 | SUCCESS | rc=0 >>
anaconda-ks.cfg
install.log
install.log.syslog

-k要输入密码,所以要做免密
[[email protected] ansible]#ssh-keygen
[[email protected] ansible]#ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
[[email protected] ansible]#ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

免密完测试
简写命令
[[email protected] ansible]# ansible test -a ‘ls /root‘
190.168.3.243 | SUCCESS | rc=0 >>
anaconda-ks.cfg
install.log
install.log.syslog

190.168.3.242 | SUCCESS | rc=0 >>
anaconda-ks.cfg
install.log
install.log.syslog

[[email protected] ansible]# ansible test -m ping
190.168.3.243 | SUCCESS => {
"changed": false,
"ping": "pong"
}
190.168.3.242 | SUCCESS => {
"changed": false,
"ping": "pong"
}

4.分组写法

[[email protected] ansible]# vim hosts
[[email protected] ansible]# ansible web -m ping
190.168.3.243 | SUCCESS => {
"changed": false,
"ping": "pong"
}
190.168.3.242 | SUCCESS => {
"changed": false,
"ping": "pong"
}
[[email protected] ansible]# ansible web_nginx -m ping
190.168.3.242 | SUCCESS => {
"changed": false,
"ping": "pong"
}

三.简单模块介绍
[[email protected] ansible]# ansible-doc -l 显示所有安装模块
[[email protected] ansible]# ansible-doc -s user 显示其中的user模块

1.setup模块 查看远程主机的基本信息
[[email protected] ansible]# ansible web_nginx -m setup

2.ping 远程主机的运行情况
[[email protected] ansible]# ansible web_nginx -m ping
190.168.3.242 | SUCCESS => {
"changed": false,
"ping": "pong"
}

3.file 设置文件属性
force:需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no

group:定义文件/目录的属组

mode:定义文件/目录的权限

owner:定义文件/目录的属主

path:必选项,定义文件/目录的路径

recurse:递归的设置文件的属性,只对目录有效

src:要被链接的源文件的路径,只应用于state=link的情况

dest:被链接到的路径,只应用于state=link的情况

state:

directory:如果目录不存在,创建目录

file:即使文件不存在,也不会被创建

link:创建软链接

hard:创建硬链接

touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间

absent:删除目录、文件或者取消链接文件

例子:
做一个软连接

删除软连接

创建文件

网友评论