zoukankan      html  css  js  c++  java
  • Ansible 安装与配置(一)

    公司大概有200多云主机需要进行管理,但是如果通过手工管理费时还累最终结果也容易出错,所以考虑通过自动化的方式来管理云主机,目前开源的自动化工具,大家用的比较多的有Ansible和Saltstack这两种,其实还有其他的只是相对于来说已经没有这两个那么常用,我这边最早接触到的是ansible所以公司采用了ansible来管理主机,下面我们介绍下ansible的安装配置。

    一、环境的准备

      1.Python2.6+:Ansible 是基于Python开发,所以我们控制主机需要安装Python2.6以上版本;

      2.Jinja2:定义模板的时候使用Jinja2,而Jinja2是Python的现代模板语言;

      3.PyYAML:写Playbook时候定义的文件类型是ymal,而PyYAML是Python 的一个 YAML 编码/反编码函数库,;

      4.paramiko:Ansible 默认是基于SSH协议通信,而paramiko纯 Python 编写的 SSHv2 协议函数库;

      5.httplib2:一个功能全面的 HTTP 客户端函数库;

    二、Ansible 安装

     Ansible 默认基于SSH协议通信,安装Ansible以后控制主机不需要启动或者后台运行任何的Ansible进行,只需要在控制主机安装Ansible,这样可以通过Ansible来管理任何一个被控节点,同时被控节点不需要安装任何客户端软件;

      1.源码安装

    # git clone git://github.com/ansible/ansible.git --recursive
    # cd ./ansible
    # source ./hacking/env-setup

      2.yum/apt 安装

    yum install ansible
    apt-get install ansible

      3.pip安装

    pip install ansible   

      4.检查下ansible 是否安装成功

    ansible --version

     返回ansbile 版本信息

    ansible 2.4.2.0
      config file = /etc/ansible/ansible.cfg
      configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/lib/python2.6/site-packages/ansible
      executable location = /usr/bin/ansible
      python version = 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]

      5.Ansible 命令集

    ansible                      # 定义ansible 单任务
    ansible-config               # 查看、编辑、管理Ansible配置
    ansible-doc                  # 文档查看工具
    ansible-galaxy               # 共享、下载roles的工具
    ansible-inventory           # 查看Inventory主机信息
    ansible-playbook           # 执行playbook
    ansible-pull                 # 仓库中拉去playbook
    ansible-vault                # 文件加密、解密工具
    ansible-console              # ansible 控制台

    三、配置运行环境

      1.配置Ansible的环境

      运行Ansible命令时,命令将按照预先设定的顺序先后查找配置文件

      I.首先Ansible 会检查环境变量是否设置ANSIBLE_CONFIG,以及检查变量指向文件的路径;
      II.检查当前目录下是否包含ansible.cfg配置文件;
      III.再次检查当前用户的主目录是否包含ansible.cfg配置文件;
      IV.最后检查/etc/ansible 目录下是否包含ansible.cfg配置文件,一般通过软件管理包(yum/apt)安装时会自动在etc目录下生成配置文件;

    注意:

      通过pip安装时候,不会生成完成的ansible.cfg配置文件,此时我们需要从github仓库中examples目录下拷贝ansible.cfg配置文件;

      2.Ansible 主要配置文件

    1 /etc/ansible/ansible.cfg     #Ansible 配置文件
    2 /etc/ansible/hosts           #主机清单
    3 /etc/ansible/roles/          #角色路径

     四、Ansible Inventory

      实际过程中我们需要管理不同业务,不同环境中的各种服务器资源,这些服务器的信息主要存储在Inventory 组件里面,ansible.cfg中默认定义配置文件的路径/etc/ansible/hosts;

      1.定义主机和主机组

       下面我们来/etc/ansible/hosts 文件中定义主机和主机组

    # Ex 1: 定义主机
    
        192.168.100.10
    
    # Ex 2:定义 'WebServers' 主机组
    
    [WebServers]
        10.172.139.53
        10.30.49.72
        10.30.49.[1:10]    # 一组类似IP地址简写模式

       说明:

        方括号[]中表示的组名字,主要用于不同类别的系统进行分类,便于对同一类的服务器资源进行管理;

      2.主机和主机组变量

    # 定义主机变量
    
        10.30.49.72  ansible_port='61821'   #定义ssh远程端口
    
    # 定义主机组变量
    # 下面的变量属于整个WebServers组
    [WebServers:vars]  
        ansible_ssh_pass='ansible'
        ansible_ssh_port='61821'

      3.Inventory 常用参数说明

    ansible_ssh_host        # 连接的远程主机名.
    
    ansible_ssh_port        # SSH远程连接端口,非标准端口设置.
    
    ansible_ssh_user        # SSH远程连接用户名
    
    ansible_ssh_pass        # SSH远程连接账号对应密码 (这种方式并容易泄露密码信息,建议使用 --ask-pass或者SSH认证)
    
    ansible_sudo_pass       # sudo用户密码(这种方式并容易泄露密码信息,烈建议使用 --ask-sudo-pass)

    五、编写第一个Ansible 程序

      Ansible 安装完成以后,我们基本的了解了Ansible的配置方式,下来我们编写下第一个Ansible 程序

    示例1:测试WebServers 服务器组连通信
      ansible WebServers
    -m ping -o        主机/主机组 模块
    返回结果:   
    39.105.0.244 | SUCCESS => {"changed": false, "ping": "pong"}   47.104.149.180 | SUCCESS => {"changed": false, "ping": "pong"}
    示例2:WebServers
    /opt 目录下创建ansible.txt文件
      ansible
    47.104.149.180 -m file -a "owner=root group=root mode=644 path=/opt/ansible.txt state=touch" -o        主机/主机组 模块 参数  返回结果:   47.104.149.180 | SUCCESS => {"changed": true, "dest": "/opt/ansible.txt", "gid": 0, "group": "root", "mode": "0644", "owner": "root", "size": 0, "state": "file", "uid": 0}

     通过以上的例子,我们大概了了解了通过Ansible的命令来管理服务器,具体的模块信息和参数后面介绍,这里我们只是来体会下Ansible的便捷性,这样我们完成了Ansible的安装和配置。

      

      

  • 相关阅读:
    算法训练 P1103
    算法训练 表达式计算
    算法训练 表达式计算
    基础练习 时间转换
    基础练习 字符串对比
    Codeforces 527D Clique Problem
    Codeforces 527C Glass Carving
    Codeforces 527B Error Correct System
    Codeforces 527A Glass Carving
    Topcoder SRM 655 DIV1 250 CountryGroupHard
  • 原文地址:https://www.cnblogs.com/mengyu/p/8904774.html
Copyright © 2011-2022 走看看