• ansible 安装部署文档


    1、简介
    ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
    (1)、连接插件connection plugins:负责和被监控端实现通信;
    (2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
    (3)、各种模块核心模块、command模块、自定义模块;
    (4)、借助于插件完成记录日志邮件等功能;
    (5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
    2、总体架构
     
    3、特性
    (1)、no agents:不需要在被管控主机上安装任何客户端;
    (2)、no server:无服务器端,使用时直接运行命令即可;
    (3)、modules in any languages:基于模块工作,可使用任意语言开发模块;
    (4)、yaml,not code:使用yaml语言定制剧本playbook;
    (5)、ssh by default:基于SSH工作;
    (6)、strong multi-tier solution:可实现多级指挥。
    4、优点
    (1)、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
    (2)、批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
    (3)、使用python编写,维护更简单,ruby语法过于复杂;
    (4)、支持sudo。

    5、准备工作

    centos7.5 ansible-manage

    centos7.5 master

    centos7.5 node1

    centos7.5 node2

    关闭防火墙 :systemctl stop firewalld && systemctl disable firewalld

    禁用selinux :setenforce 0 临时关闭

                        sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux

    下载epel扩展源:yum install -y epel-release

     


     

    6、安装ansible:

    yum install ansible -y 

    这里默认安装的是ansible2.7

    修改配置文件 vim /etc/ansible/hosts 添加主机组

    7、ssh免秘钥登录配置

    生成密钥文件:ssh-keygen -t dsa -f ~/.ssh/id_dsa -P ""

    与各主机免密登陆:ssh-copy-id -i ~/.ssh/id_dsa.pub root@192.168.175.144等

    8、测试ansible

    ping各主机状态:ansible test -m ping

    ansible 常用模块介绍

    1、Command 模块

        作用:在远程主机运行命令

             示例:ansible web -a "ls /root" #省略模块不写默认为command模块

        注意:该模块不支持一些特殊符号如`"<"', `">"', `"|"',`";"' and `"&"等如需利用这些符号需使用shell模块。

    2、shell模块

        作用:在远程主机在shell进程下运行命令,支持shell特性,如管道等。

             示例:ansible web -m shell -a "echo 123456|passwd --stdin wang"

    3、copy模块

        作用:在远程主机执行赋值操作文件

             示例:

        (1)        src=  dest=

        (2)        content=   dest= #content生成字符到目标文件

        其他 owner,group, mode (mode#修改权限)

            [root@centos7_1~]# ansible web -m copy -a "src=/etc/fstab dest=/apps/test"

             [root@centos7_1~]# ansible web -m copy -a"content='hello world1' dest=/apps/test"

             [root@centos7_1 ~]# ansible web -m copy-a "content='hello world1' mode=777 dest=/apps/test1"

            

    4、cron模块

             作用:主要是用来对定时任务进行调度

             参数:

        name=               任务的描述

        minute=           分

        day=                   天

        weekday=          周

        hour=                 时

        Month                月

        job=                    需要执行的命令,必须状态为present

        state=                状态

                present:创建

                absent:删除       

     

    5、fetch模块

        作用:fetches a file from remotenodes         (获取远程节点文件)

     

    6、file模块

        作用:sets attributes of files( 设置文件的属性)

        用法:

        (1)    创建链接文件:*path=  src= state=link

        (2)    修改属性 : path=  owner= mode= grup=

        (3)    创建目录:path= state=directory

     

     7、filesystem模块

        作用:Makes file system on block device   能够在块设备上创建文件系统(慎用)

    8、hostname模块

        作用:管理主机名称

    9、pip模块

         作用:Manages Python librarydependencies.  #管理Python库依赖项。

    10、yum模块

        作用:Manages packages with the`yum' package manager  #使用`yum'软件包管理器管理软件包

             参数:

            name=    程序包名称,可以带版本号

           state=        状态

                    present,latest   目前/最新版本

                    installed  安装

           conf_file:指定yum配置文件

              示例:[root@centos7_1 ~]# ansibleweb -m yum -a "name=httpd state=latest"

     

    11、service 模块

        作用:管理服务

             参数

           name=       服务名称

           state=        状态

                    started       启动

                    stopped      停止

                                restarted    重启

                                enabled=    [yes|no] 是否随系统启动

                                runlevel=             运行级别

        示例:ansible web -m service -a"name=httpd state=started enabled=yes runlevel=5" #记得针对Centos7就

        不要使用这个模块了。

     

    12、user 模块

        作用:管理用户帐号

        参数:

                      name=                 用户名

                      state=                  状态

                      system=   [yes|no]    是否为系统用户

                      shell=  默认shell类型       指定shell

                      uid=                     指定UID

                      home=                 指定家目录

    group=                 指定属组

    groups=               指定附加组

    comment=          描述信息

    13、script模块

    执行脚本 (执行的是本地的脚本将其复制到远程在执行)

                       -a “/PATH/TO/SCRIPT_FILE” 会在远程自动给予权限并运行

    14、Template模块

        基于模板方式生成一个文件复制到远程主机(template使用Jinjia2格式作为文件模版,进行文档内变量的替换的模块。它的每次使用都会被ansible标记为”changed”状态。)下一章节由详细应用介绍。

                       backup=     备份

                       src=            源文件

                       dest=          目标路径

                       owner=      属主

                       group=       主组

                       mode=       权限

    下一章节准备 介绍ansible-playbook的使用  敬请期待!!!

     

  • 相关阅读:
    【java】一种自动生成数据库文档的方法
    sublime vintage mode 按住一个键(比如 j)不会重复的问题
    SQL Service服务更换帐户后无法启动的情况(Security 4625 Type 5)
    隐藏的计划任务运行,导致账户被锁的调查方法
    nodejs 热更新页面
    数组转tree arrToTree
    compose函数
    react 类组件的生命周期
    qiankun 微应用demo
    application 'xxx' died in status LOADING_SOURCE_CODE: [qiankun] You need to export lifecycle functions in xxx entry
  • 原文地址:https://www.cnblogs.com/king-LL/p/9929808.html
Copyright © 2020-2023  润新知