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. 一个ssm综合小案例-商品订单管理-第二天

    准确来说是第二三天,一时兴起,把这个小项目一鼓作气写完了(较大的bug 均已被我手动捉出并 fix )才来写一篇博客. 接上文 第一天配置继续讲解:

  2. 读asyncio模块源码时的知识补漏

    硬着头皮看了一周的asyncio模块代码,了解了大概的执行流程,引用太多,成尤其是对象间函数的引用. 光是这么一段简单的代码: # coding: utf8 import asyncio import ...

  3. TED_Topic7:How we unearthed the spinosaurus

    By Nizar Ibrahim A 50-foot-long carnivore who hunted its prey in rivers 97 million years ago, the sp ...

  4. mysql修改时区

    查看mysql当前时间 查看mysql时区设置 查看mysql数据库的时区 mysql修改时区的几种方法

  5. 以python代码解释fork系统调用

    import os print('Process (%s) start...' % os.getpid()) # Only works on Unix/Linux/Mac: pid = os.fork ...

  6. vim下如何去掉windows编辑的文件中的^M

    可以去掉^M, 例如: 在终端下敲命令: dos2unix a.c 直接转换成unix格式,这样就可以去掉^M •$dos2unix filename •vim filename :%s/^M$//g ...

  7. CasperJS API介绍

    一.使用标准JavaScript对象作为可选参数构造CasperJS实例 1 直接在create()函数里面使用 var casper = require('casper').create({ cli ...

  8. 解决华为手机无法输出Debug级别log的问题

    近期购入了新款的华为手机荣耀8,手感.性能.颜值都非常好.作为android开发工程师,自然会用到真机进行日常的调试.然而,这部手机并没有这么“听话“!反复尝试开启开发者选项中的设置项,依旧无法输出L ...

  9. JS实现文本中查找并替换字符

    JS实现文本中查找并替换字符 效果图: 代码如下,复制即可使用: <!DOCTYPE html><html> <head> <style type=" ...

  10. 20165330《网络对抗技术》Exp0 Kali安装

    Kali安装 下载地址 Kali官网 VMware 安装步骤 参考在虚拟机中安装kali linux 安装Kali Linux的镜像和VMware 打开VMware,选择文件-新建虚拟机,出现对话框选 ...