• 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的安装和配置。

      

      

  • 相关阅读:
    平时十二测
    无题十四
    暑假第十测
    无题十三
    noip错题集
    无题十二
    BZOJ整理
    志愿者招募
    修车
    任务安排
  • 原文地址:https://www.cnblogs.com/mengyu/p/8904774.html
Copyright © 2020-2023  润新知