• ansible简介


    Ansible项目

    一、Ansible简介:

    ansible是一种新流行的自动化运维工具,基于python2-paramiko模块开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令功能。

    ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只提供一种框架。ansible这个框架主要包含以下功能:

    (1)连接插件connection plugins:负责和被监控端事先通信;

    (2)host inventory:操作主机清单;

    (3)核心模块、command模块、自定义模块;

    (4)借助与插件完成记录日志邮件等功能;

    (5)Playbook:剧本执行多个任务时,非必须可以让节点一次性运行多个任务。

     

     

    二、Ansible特性:

    (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: 可实现多级指挥。

    三、Ansible优点:

    (1)轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可。

    (2)批量任务执可以写成脚本,而且不用分发到远程就可以执行。

    (3)使用python编写,维护更简单,ruby语法过于复杂。

    (4)支持sudo

    四、安装Ansible:

    1)管理节点上安装Ansible

    (Redhat/CentOS Linux上,Ansible目前放在epel源中。Fedora默认源中包含Ansible,自己安装即可)

    # yum install epel-release

    # yum install ansible -y

    # ssh-keygen

    # ssh-copy-id remoteuser@remotehost

    2)被管理的远程主机

    不需要安装特殊的包,只需要配置并启动SSH服务且Python版本在2.4以上即可。Redhat一般安装方式都是默认安装的。  

    五、Ansible配置文件简介:

    (1)主配置文件:/etc/ansible/ansible.cfg

    (2)默认主机清单文件:/etc/ansible/hosts

    Ansible的配置文件说明:

    配置文件种类

    说明

    所在位置

    默认配置文件

     ansible软件的的默认配置文件,对所有使用ansible的用户生效

    /etc/ansible/ansible.cfg

    用户配置文件

    使用普通用户的执行特定的运维playbook,只要使用该用户登录ansible运维主机,不管在任何文件夹下该配置文件将会覆盖默认配置文件中的内容。

    ~/amsible.cfg

    ~/.ansible.cfg

    运维项目配置文件

    把一类运维playbook放在一个文件夹中,仅仅在当前的运维项目中生效的配置文件。

    /dir/ansible.cfg

    ● 使用ansible  --version查看当前生效的ansible.cfg的路径。

    ● 当三种文件的发生冲突的时候,优先级:运维项目配置文件 > 用户配置文件 > 默认配置文件

    /dir/ansible.cfg > ~/.ansible.cfg > ~/amsible.cfg > /etc/ansible/ansible.cfg

    可以在ansible.cfg指定hosts文件在哪里

    六、Ansible默认主机清单文件Inventory为/etc/ansible/hosts

    什么是inventory:

    ● Static lines of servers

    ● Ranges

    ● Other custom things

    ● Dynamic lists of servers: AWS,Azure,GCP,etc.

    语法结构:

    ● “#”开始表示注释,空格行被忽略

    ●  使用[ ]设置远程主机分组,[groupname]内是组名。

    ●  主机列表可以使用主机名或IP地址。

    ●  一个主机名或IP地址可以在多个分组中。

    ●  使用[start:end]表示连续的主机。

    ● 分组支持嵌套,一个组可以包含其它组,新组名中以”:children“后缀。

    [group1]

    host1.example.com

    host2.example.com

    [group2]

    host3.example.com

    host4.example.com

    [newgroup:children]

    group1

    group2

    1)标准的主机和分组清单例子:

    mail.example.com

    [webservers]

    foo.example.com

    bar.example.com

    [dbservers]

    one.example.com

    two.example.com

    three.example.com

    (2)非标准端口下主机清单

    badwolf.example.com:5309

     

    3)连续大量主机清单"[start:end]"

    [webservers]

    www[01:50].example.com

    [databases]

    db-[a:f].example.com

    192.168.[4:7].[0:255]        //在192.168.4.0/22网段下的所有主机,即192.168.4.0-192.168.7.255

     

    4)主机设定别名的清单

    jumper ansible_port=5555 ansible_host=192.0.2.50

     

    5)组中包含其它组(组嵌套)

    [olympia]

    washington1.example.com

    Washington2.example.com

    [salem]

    oregon01.example.com

    oregon02.example.com

    [nwcapitols:children]

    olympia

    salem

     

    6)设定连接参数

    [targets]

    localhost                ansible_connection=local

    other1.example.com     ansible_connection=ssh        ansible_user=mpdehaan

    other2.example.com     ansible_connection=ssh        ansible_user=mdehaan

    主机清单文件常用连接参数

    连接参数

    表示含义

    ansible_connection

    SSH的连接方式。可以指定为smart、ssh、local、paramiko

    ansible_host

    Ansible连接的主机地址,如果在主机清单中起了一个不同的别名,那么需要用这个参数指定主机IP或主机名。

    ansible_port

    SSH端口号,默认为22。

    ansible_user

    SSH连接时使用的默认用户名。

    ansible_ssh_pass

    SSH连接时使用的密码。不过不建议用本参数存储明文的密码。

    ansible_ssh_private_key_file

    指定使用ssh-keygen生成的私钥文件所存放的位置。

    ansible_ssh_common_args

    通过配置此参数来指定SFTP、SCP和SSH默认的额外参数。

    更多连接参数http://docs.ansible.com/ansible/latest/intro_inventory.html#list-of-behavioral-inventory-parameters

  • 相关阅读:
    美团前端面经-2020-估计是凉了
    JavaScript的垃圾回收机制与内存泄漏
    从输入URL到浏览器显示页面发生了哪些事情---个人理解
    let 、const 、var、function声明关键字的新理解
    前端中堆和栈的概念
    今天想好好的认真开始维护自己的博客
    关于org.apache.poi 导出excel时引发的No such file or directory
    MySQL查询本周、上周、本月、上个月份数据的sql代码
    为mybatis mapper xml文件添加注释遇到问题
    ubuntu使用中遇到问题及解决方法持续整理
  • 原文地址:https://www.cnblogs.com/qxfy/p/12022035.html
Copyright © 2020-2023  润新知