zoukankan      html  css  js  c++  java
  • Ansible

    Ansible中文权威指南  http://www.ansible.com.cn/

    ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
    ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
    (1)、连接插件connection plugins:负责和被监控端实现通信;
    (2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
    (3)、各种模块核心模块、command模块、自定义模块;
    (4)、借助于插件完成记录日志邮件等功能;
    (5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

    安装 Ansible
    Ansible 能够安装到 Linux、BSD、Mac OS X 等平台,Python 版本最低要求为 2.6。常用 Linux 发行一般可以通过其自带的包管理器安装 Ansible:
    1    yum -y install ansible     # RHEL/CentOS/Fedora,需要配置 EPEL源
    2    apt-get install ansible # Debian/Ubuntu
    3    emerge -avt ansible     # Gentoo/Funtoo

    准备 Inventory
    Inventory 文件用来定义你要管理的主机。其默认位置在 /etc/ansible/hosts ,如果不保存在默认位置,也可通过 -i 选项指定。被管理的机器可以通过其 IP 或域名指定。未分组的机器需保留在 hosts 的顶部,分组可以使用 [] 指定,如:
    1    [web] 
    2    linuxtoy.org
    同时,分组也能嵌套:
    1    [vps:children] 
    2    web 
    3    db
    此外,也可以通过数字和字母模式来指定一系列连续主机,如:
    1    [1:3].linuxtoy.org # 等价于
    2    1.linuxtoy.org、2.linuxtoy.org、3.linuxtoy.org 
    3    [a:c].linuxtoy.org # 等价于
    4    a.linuxtoy.org、b.linuxtoy.org、c.linuxtoy.org

    现在,我们执行以下命令来看看 Ansible 是否能正常工作:
    1    ansible -i hosts all -m ping -u www
    该命令选项的作用分别为:
        • -i:指定 inventory 文件,使用当前目录下的 hosts
        • all:针对 hosts 定义的所有主机执行,这里也可以指定组名或模式
        • -m:指定所用的模块,我们使用 Ansible 内置的 ping 模块来检查能否正常管理远端机器
        • -u:指定远端机器的用户
    如果返回如下结果:
    1    linuxtoy.org | success >> { 
    2    "changed": false, 
    3    "ping": "pong" 
    4    }
    则说明一切正常。
    下面我们再看看远端机器的 uptime:
    1    ansible vps -a 'uptime'
    这将输出:
    1    linuxtoy.org | success | rc=0 >> 
    2    11:23:16 up 177 days, 21:19, 0 users, load average: 0.55, 0.45, 0.39
    此处我们省略了 -m,Ansible 默认使用 command 模块;-a 指定模块的参数,即执行 uptime 命令。
    使用 Ad-Hoc 管理简单任务
    执行 Ad-Hoc 就跟我们在 Linux 下执行单行命令差不多,用来快速完成简单的任务十分方便。比如:如果被管理端的 Python 为 2.4,那么需要 python-simplejson 这个包。我们可以通过以下命令在所有 CentOS 主机上安装它:
    1    ansible all -m raw -a 'yum -y install python-simplejson'
    花时间看看 Ansible 的模块非常值得,你将明白它能干什么。创建用户及组、安装软件包、分发配置文件、管理服务等等不一而足。在命令行下,可通过 ansible-doc 查询模块文档,如:
    1    ansible-doc raw
    使用 Playbook 管理复杂任务
    对于需反复执行的、较为复杂的任务,我们可以通过定义 Playbook 来搞定。Playbook 是 Ansible 真正强大的地方,它允许使用变量、条件、循环、以及模板,也能通过角色及包含指令来重用既有内容。我们来看一个简单的例子,该例子在远端机器上创建一个新 的用户:
    1    --- 
    2    - name: create user 
    3      hosts: vps 
    4      user: root 
    5      gather\_facts: false
    6    
    7    vars: 
    8    - user: "toy"
    9    
    10    tasks: 
    11    - name: create {{ user }} on vps 
    12      user: name="{{ user }}"
     
    首先,我们给 Playbook 指定了一个名称;接着,通过 hosts 让该 Playbook 仅作用于 vps 组;user 指定以 root 帐号执行,Ansible 也支持普通用户以 sudo 方式执行;gather\_facts 的作用是搜集远端机器的相关信息,稍后可通过变量形式在 Playbook 中使用;vars 定义变量,也可单独放在文件中;tasks 指定要执行的任务。
    要执行 Playbook,可以敲入:
    1    ansible-playbook user.yml
    执行结果为:
    1    PLAY [create
    2    user] ************************************************************
    3    
    4    TASK: [create toy on
    5    vps] ***************************************************** 
    6    changed: [linuxtoy.org]
    7    
    8    PLAY
    9    RECAP ******************************************************************** 
    10    linuxtoy.org : ok=1 changed=1 unreachable=0 failed=0


  • 相关阅读:
    一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建Viewport(1)
    CMS之图片管理(1)
    如何将简单CMS后台管理系统示例转换为Java、Php等不同后台语言的版本
    软件开发,维护与支持的困惑
    5 个常用的软件质量指标
    一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建Viewport(2)
    一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之用户管理(2)
    一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之用户管理(4)
    JAVA实现DES加密
    找出占用大量资源的SQL
  • 原文地址:https://www.cnblogs.com/gsophy/p/8513200.html
Copyright © 2011-2022 走看看