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的更多相关文章

  1. SQL Server 自动化运维系列

    本系列为SQL SERVER自动化运维的一些操作技巧点,所有内容都是根据日常运维过程中最经常遇到的问题,并为此形成了一些自动化运维的方式,皆为原创.... 供部分DBA和开发人员浏览借鉴,所应用平台基 ...

  2. CheungSSH国产自动化运维工具开源Web界面

    CheungSSH web2.0 发布文档 CheungSSH 简介 CheungSSH是一款国人自主研发的Linux运维自动化管理服务器软件,秉着为企业降低运营成本,解放管理员双手和自动化生产的理念 ...

  3. 自动化运维工具ansible部署以及使用

    测试环境master 192.168.16.74webserver1 192.168.16.70webserver2 192.168.16.72安装ansiblerpm -Uvh http://ftp ...

  4. #研发解决方案#iDB-数据库自动化运维平台

    郑昀 创建于2015/12/2 最后更新于2015/12/2 关键词:数据库,MySQL,自动化运维,AutoDDL,刷库,帐号授权,审核,回滚 提纲: 数据库自动化运维什么?别人家是怎么玩的? 我们 ...

  5. 自动化运维工具Ansible详细部署 (转载)

    自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...

  6. 自动化运维:网站svn代码上线更新(flask+saltstack)

    阶段性总结:      跌跌撞撞的用了一周左右的时间做完了网站自动升级功能,中间遇到了很多的问题,也学到了很多,在此做一个总结.   1.整体架构: 后台:nginx+uwsgi  #nginx提供w ...

  7. 自动化运维工具之 Ansible 介绍及安装使用

    一.初识Ansible 介绍: Absible 使用 模块(Modules)来定义配置任务.模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等.A ...

  8. (转)mongodb常用命令脚本化-自动化运维

    mongodb常用命令脚本化-自动化运维 把一些运维中常用到的mongodb命令写成shell脚本,极大的方便了维护   1 设置副本集   #!/bin/bash#mongodb 进入client ...

  9. 自动化运维工具之ansible

    自动化运维工具之ansible   一,ansible简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...

随机推荐

  1. 论文中“but”与“however”的区别

  2. 织梦 dedecms 首页调用公司简介的内容

    首页调用公司简介的代码: {dede:sql sql='Select content,substring(content,1,300) as content from dede_arctype whe ...

  3. [转载]使用SQL Server 2008的事务日志传送功能备份数据库(logshiping)

    http://www.cnblogs.com/benbenkoala/archive/2009/03/11/1407793.html 引言:SQL Server的事务日志传送备份是仅次于镜像的高可靠性 ...

  4. Requests中出现大量ASYNC_NETWORK_IO等待

    七夕活动,网页显示异常:504 Gateway Time-out The server didn't respond in time.开发询问数据库是否正常,当时正连接在实例上查询数据,感觉响应确实慢 ...

  5. word技巧

    1.插入注解(脚注和尾注) 2.复制的图片显示不全怎么办? 横向显示,或者图片另存为然后保存为PPT 3.word修订标记的添加和删除(最终版) 4.word中表格样式调整 5.修改标题的样式和标题的 ...

  6. 【CTF REVERSE】WHCTF2017-CRACKME

    1.前言 假装大学生水一下CTF题目,常规思路.程序没有加壳,是VC写的MFC程序. 2.破题思路 1.MessageBox 下断点 2.找到提示错误字符串的函数B 3.跟踪函数 4.跟踪算法 3.实 ...

  7. Convert Expression to Reverse Polish Notation

    Given an expression string array, return the Reverse Polish notation of this expression. (remove the ...

  8. Palindrome Partitioning I & II

    Given a string s, partition s such that every substring of the partition is a palindrome. Return all ...

  9. mac lsof使用查看端口

    安装 brew install lsof 在Mac OS系统中,无法使用netstat来查看端口占用情况,可以使用lsof来代替,这种方式在Linux下也适用. sudo lsof -nP -iTCP ...

  10. python基础-列表元组字典

    1.列表和元组 列表可以对数据实现最方便的存储.修改等操作 names=["Alex","tenglan","Eric","Rai ...