linux自动化运维--ansible

linux自动化分为三个层次python

  1.OS provisioning 自动化安装系统  linux

    经常使用软件:cobbler(red hat 用、PXEweb

  2.OS config  自动化配置系统apache

    经常使用软件:cfengine,puppet,saltstack chefvim

  3.OS deployment 深度定制自动化服务器

    经常使用软件:func(C/S,ssl)、fabric(ssh,python)、ansible架构

ansible:因为能够完成三个层次的事情因此比较强大。(基于ssh去链接到主机,因此先要认证)运维

  ansible特性:     ssh

    部署简单,只需在主控端部署Ansible环境,被控端无需作任何操做;
    默认使用SSH协议对设备进行管理;
    有大量常规运维操做模块,可实现平常绝大部分操做;
    配置简单、功能强大、扩展性强;
    支持API及自定义模块,可经过Python轻松扩展;
    经过Playbooks来定制强大的配置、状态管理;
    轻量级,无需在客户端安装agent,更新时,只需在操做机上进行一次更新便可;
    提供一个功能强大、操做性强的Web管理界面和REST API接口——AWX平台。测试

  ansible的架构及组件

    

      Ansible:Ansible核心程序。
      HostInventory:记录由Ansible管理的主机信息,包括端口、密码、ip等。
      Playbooks:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机须要调用哪些模块来完成的功能。
      CoreModules:核心模块,主要操做是经过调用核心模块来完成管理任务。
      CustomModules:自定义模块,完成核心模块没法完成的功能,支持多种语言。
      ConnectionPlugins:链接插件,Ansible和Host通讯使用

  安装ansible:yum安装

    

  安装ansible:

      1.下载epel源到/etc/yum.repos.d

          #wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

      2.yum clean all

      3. yum makecache

      4.yum install ansible -y

  使用ansible准备

    1.配置主机:

      在安装有ansible服务器上/etc/hosts 文件中添加主机

        格式:

            [机组名]          例:  [websevices]

            机组ip或主机名          192.168.29.129

                              www.zrq1.com

     2.配置认证:这里因为ansible须要到客户机上执行操做,因此须要对于客户机有登陆权限,最好设置免密登陆

          1.建立证书

            #ssh-keygen -t   rsa  -P ''

          2.拷贝证书

            #ssh-copy-id -i ./ssh/id_rsa.pub  root@192.1168.1.162

    3.测试是否成功

        #ansible  all -m  pinng  :像全部的客户机发送ping测试

  ansible配置文件:

      hosts:配置主机群

  ansible基本语法:    

      ansible 

        ansible <host-pattern> [options]

          host-pattern:在host中定义的主机群      

              all:全部主机

          options:

              -m:后面接模块

                若是直接执行命令,不用模块能够省略

                   例如:ansible all   -a  ‘service httpd status’

                  查看客户机的httpd服务状态

              -a:后面接模块的命令

              ansible-doc  -l:列出全部模块

                经常使用模块:copy、cron、acl、group、user

              ansible-doc -s  模块名:查看指定模块的参数 

          例:ansible  webserver  -m copy  -a  “src=/root/zrq.sh dest=/tmp/zrq/”   注意:命令不支持管道

             用复制模块复制文件到websever服务器群的目录中

      ansible相关命令:

        ansible-doc

            -l:查看全部模块

                主要模块:

                    acl:

                    at:

                    cron

                    copy

                    command:

                    user

                    group

                    yum

                    service

                    file

 

            -s:查看指定模块的参数

                例如:ansible-doc -s copy             

      ansible的playbook模块:

          1.基于YAML(一种文本格式)语言:

             ymal文件扩展名一般为。yaml

            -:表示

            空格:表示

            每一个任务都有名称  

            注意缩进

          2.playbooks:基于yaml语言格式的一个.yaml文件

            示例:(注意:千万注意缩进以及对其,特别是-)

            #vim test.yaml             

            - hosts: all               remote_user: root               tasks:               - name: ensure apache status               service:              name: httpd                 state: status

相关文章
相关标签/搜索