自动化运维_Ansible
1. 前言
Ansible是自动化运维的工具,基于Python开发,实现了批量系统配置、批量程序部署、批量运行命令等功能。
Ansible是基于模块工作的,ansible提供一个框架,通过模块实现批量部署。

2. 安装,使用
2.1 安装Ansible
使用epel的源安装,添加epel源此处不详述。
# yum install ansible --enablerepo=epel
2.2 设置密钥登录
生成SSH公钥密钥对
# ssh-keygen -t rsa -P ''
拷贝公钥到被管理端的服务器
# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
# chmod 600 /root/.ssh/authorized_keys
确认可以用密钥连接到管理端的服务器
2.3 配置Ansible
定义主机组,可以使用主机名或IP
# vi /etc/ansible/hosts
[tests]
test167
test154
另外,Ansible的配置文件在 /etc/ansible/ansible.cfg,默认不需要修改。
2.4 使用Ansible
2.4.1 Ping模块
# ansible tests -m ping

2.4.2 执行命令,command、shell模块
# ansible tests -m command -a 'uptime'
# ansible tests -m shell -a 'date' # ansible tests -m command -a 'cat /etc/resolv.conf'
2.4.3 查看配置,setup模块
# ansible tests -m setup
2.4.4 拷贝文件,copy模块
# ansible tests -m copy -a 'src=/home/ec2-user/test.txt dest=/tmp/test222.txt mode=0644'
2.4.5 添加用户,user模块
# ansible tests -m user -a 'name=test comment="test user" uid=1000 password="crypted-password"'
密码生成方法:
# yum install python-pip
# pip install passlib # python -c "from passlib.hash import sha512_crypt; import getpass; print sha512_crypt.encrypt(getpass.getpass())"
2.4.6 安装软件,yum模块
# ansible tests -m yum -a 'name=vsftpd state=present'
2.4.7 启动服务,设置开机自启动,service模块
# ansible tests -m service -a 'name=vsftpd state=started enabled=yes'
查看
# ansible tests -m shell -a 'ps -ef| grep ftp'
# ansible tests -m shell -a 'ss -tln| grep 21'
2.4.8 支持管道,raw,shell模块
# ansible tests -m raw -a 'ss -tln| grep 21'
2.5 其他命令
2.5.1 查看帮助
列出所有已安装模块
# ansible-doc -l
查看某模块的简介
# ansible-doc -s ping
2.5.2 ansible-pull
使用pull模式,(默认是push模式)
3. Playbook文件
Playbook是由一个或多个“play”组成的列表,可以让它们联同起来按事先编排的机制执行
# ansible-playbook test.yml
Playbook文件的格式,YAML是一个可读性高的标记语言。
Role可以把playbook分成一个一个模块,使结构更清晰。
3.1 Role的构造
包括 tasks, defaults, vars, files, templates, mata, handlers 各目录,其中 tasks 是必需的。

3.2 Role的例子
本例子是最基本的构成,只包括tasks
3.2.1 创建目录 roles/apache2/tasks
# mkdir -p roles/apache2/tasks
3.2.2 创建 tasks/main.yml
---
- name: Install apache2 (RedHat).
yum: name=httpd
when: "ansible_os_family == 'RedHat'" - name: Install apache2 (Debian).
apt: name=apache2
when: "ansible_os_family == 'Debian'"
3.2.3 创建 Playbook (site.yml)
---
- name: Install Apache2
hosts: tests
remote_user: root roles:
- apache2
3.2.4 执行
# ansible-playbook site.yml

3.3 官方的playbook例子
https://github.com/ansible/ansible-examples
3.4 playbook文件加密
ansible-vault 对配置文件(比如playbooks),进行基于密码的加密,防止敏感信息泄露
3.4.1 加密已存在文件
# ansible-vault encrypt ./site.yml
3.4.2 加密并创建文件
# ansible-vault create filename
加密后的playbook

3.4.3 执行加密后的playbook
# ansible-playbook ./site.yml --ask-vault-pass
3.4.4 解密
# ansible-vault decrypt ./site.yml
4. 后记
Ansible使用简单,不需要客户端,模块化程度高,定制灵活,当管理服务器的数量多的时候,能起到很大的帮助。是一个很好的自动化运维工具。
自动化运维_Ansible的更多相关文章
- SQL Server 自动化运维系列
本系列为SQL SERVER自动化运维的一些操作技巧点,所有内容都是根据日常运维过程中最经常遇到的问题,并为此形成了一些自动化运维的方式,皆为原创.... 供部分DBA和开发人员浏览借鉴,所应用平台基 ...
- CheungSSH国产自动化运维工具开源Web界面
CheungSSH web2.0 发布文档 CheungSSH 简介 CheungSSH是一款国人自主研发的Linux运维自动化管理服务器软件,秉着为企业降低运营成本,解放管理员双手和自动化生产的理念 ...
- 自动化运维工具ansible部署以及使用
测试环境master 192.168.16.74webserver1 192.168.16.70webserver2 192.168.16.72安装ansiblerpm -Uvh http://ftp ...
- #研发解决方案#iDB-数据库自动化运维平台
郑昀 创建于2015/12/2 最后更新于2015/12/2 关键词:数据库,MySQL,自动化运维,AutoDDL,刷库,帐号授权,审核,回滚 提纲: 数据库自动化运维什么?别人家是怎么玩的? 我们 ...
- 自动化运维工具Ansible详细部署 (转载)
自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...
- 自动化运维:网站svn代码上线更新(flask+saltstack)
阶段性总结: 跌跌撞撞的用了一周左右的时间做完了网站自动升级功能,中间遇到了很多的问题,也学到了很多,在此做一个总结. 1.整体架构: 后台:nginx+uwsgi #nginx提供w ...
- 自动化运维工具之 Ansible 介绍及安装使用
一.初识Ansible 介绍: Absible 使用 模块(Modules)来定义配置任务.模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等.A ...
- (转)mongodb常用命令脚本化-自动化运维
mongodb常用命令脚本化-自动化运维 把一些运维中常用到的mongodb命令写成shell脚本,极大的方便了维护 1 设置副本集 #!/bin/bash#mongodb 进入client ...
- 自动化运维工具之ansible
自动化运维工具之ansible 一,ansible简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...
随机推荐
- Sublime Text 之运行 js 方法[2015-5-6更新mac下执行js]
昨天说完<Sublime Text 2 绿化与汉化 [Windows篇]>,今天我们来说说怎么用st直接运行 js 吧.群里的小伙伴一直对我的 ST 能直接运行js感到非常好奇,今天我就公 ...
- 20155339 2016-2017-2 《Java程序设计》第6周学习总结
20155339 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 串流设计 Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象 ...
- Nginx使用笔记
本篇记录使用Nginx的一些tricks. 一.更改默认Web根目录 修改配置文件 Nginx默认的Web根目录是:/usr/share/nginx/html/,一般我们都是习惯的是:/var/www ...
- HTML5+CSS把footer固定在底部
在刚开始给网页写footer的时候,我们会碰到一个让人烦躁的问题:当页面内容太少时,footer显示在了页面中间,这是我们不希望出现的,我们希望它能够永远呆在底部,不管网页的内容是多还是少.下面的代码 ...
- Verilog笔记.三段式状态机
之前都是用的一段式状态机,逻辑与输出混在一起,复杂点的就比较吃力了. 所以就开始着手三段式状态机. 组合逻辑与时序逻辑分开,这样就能简单许多了. 但是两者在思考方式上也有着很大的区别. 三段式,分作: ...
- LEARN HOW TO HACK
出处:https://www.hackerone.com/hacker101 什么是HACKER101? https://hacker101.com/Hacker101是一个视频,资源和实践活动的集合 ...
- bulk_write&Replace_one
ns=[]ns.append(ReplaceOne({'ip': ok['ip']}, ok, upsert=True))#更新插入 if len(ns) > 0: res = coll.bul ...
- WPF为stackpanel设置滚动条
最新遇到ItemControl控件增加滚动条功能,找半天还是在StackPanel模板外添加的. <ScrollViewer x:Name="scrolls" Vertica ...
- 网易与Google合作发布开源UI自动化测试方案 牛逼:Google 方面评价,这可能是目前世界上最好的 Android 游戏自动化测试方案。
美西时间 3 月 19 日,在 GDC 开幕第一天的 Google 开发者专场,Google 发布了一款由网易研发的 UI 自动化测试方案:Airtest Project.Google 方面评价,这可 ...
- 掩膜 rcnn
更多讨论,参考知乎:https://www.zhihu.com/question/57403701