码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-09-17 19:41:22      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:指定   play   属性   syslog   pup   技术   Opens   manager   不执行   

一.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主控制模块
[root@server1 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 显示指定模块的简要说明

[root@server1 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要输入密码,所以要做免密
[root@server1 ansible]#ssh-keygen
[root@server1 ansible]#ssh-copy-id -i /root/.ssh/id_rsa.pub root@190.168.3.241
[root@server1 ansible]#ssh-copy-id -i /root/.ssh/id_rsa.pub root@190.168.3.242

免密完测试
简写命令
[root@server1 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

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

4.分组写法
技术分享图片

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

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

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

2.ping 远程主机的运行情况
[root@server1 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:删除目录、文件或者取消链接文件

例子:
做一个软连接

技术分享图片

删除软连接
技术分享图片

创建文件
技术分享图片

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

标签:指定   play   属性   syslog   pup   技术   Opens   manager   不执行   

原文地址:http://blog.51cto.com/anfishr/2176243

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!