zoukankan      html  css  js  c++  java
  • ansible安装及原理

    介绍两种安装方式yum 和编译

    1)yum安装
    yum install ansible -y
     
    2)编译安装
     ...
     
    ansible原理和架构
    主要包含6个组件:
    1)Ansible核心
    2)Inventory主机清单
    3)Modules模块
    4)Playbook剧本
    5)Plugins插件
    6)连接插件
     
    1.1)ansible提供了两种方式来执行任务。
    第一,直接用ansible命令。
    比如:ansible webserver -m command -a "uptime"
    webserver表示主机组
    -m 之后是命令模块
    -a 之后是模块中的参数
     
    第二,使用ansible-playbook命令,使用这个方式更多相当于第一种方法。
    ansible-playbook webserver.yml
    webserver.yml是一个定义好的Playbook,自动化运维,大部分靠它实现。
     
    2.1)Inventory主机清单,就是被管理主机清单,在执行ansible任务时,必须指定被管理的主机清单。
    默认在/etc/ansible/hosts文件中定义,也可以使用-i /path/hosts 来指定主机清单文件的位置。
     
    3.1)Modules 模块:分为三类,核心模块、扩展模块、自定义模块。
     
    4.1)Playbook剧本:可以将一个复杂的任务,非常清晰地表述出来。YAML格式编写。
     
    5.1)Plugins插件:插件是ansible功能的补充,比如日志、邮件功能。
     
    6.1)连接插件:默认使用SSH协议连接被管理服务器,提供4种连接方式open SSH,local(执行本地任务),paramiko(python的SSH连接库),zeromq(一个基于消息队列的多线程网络库)
     
    ansible配置项说明
    配置文件的默认路径 /etc/ansible/ansible.cfg
    通过分块来定义各项参数,以[分块名称]表示,一共包含以下几块。
    • default:定义一些通用的配置参数
    • inventory = /etc/ansible/hosts    #定义主机清单路径
    • forks  = 5    #定义任务的并发数,默认5个,执行时通过-f 指定
    • sudo_user = root    #定义默认的sudo用户,默认为root
    • gathering = implicit    #允许获取facts的值,如果定义为explicit,将无法获取setup模块所能获取到的变量值
    • host_key_checking = False    #关闭第一次连接系统是检查keys的提示
    • action_plugins = /usr/share/ansible_plugins/action_plugins    #定义插件的路径
    • callback_plugins = /usr/share/ansible_plugins/callback_plugins    #定义插件的路径
    • connection_plugins = /usr/share/ansible_plugins/connection_plugins    #定义插件的路径
    • lookup_plugins = /usr/share/ansible_plugins/lookup_plugins    #定义插件的路径
    • vars_plugins = /usr/share/ansible_plugins/vars_plugins    #定义插件的路径
    • filter_plugins = /usr/share/ansible_plugins/filter_plugins    #定义插件的路径
    • fact_caching = memory    #定义fact的缓存方式,可以选memory和redis
     
    • privilege_escalation:定义一些提升权限的参数,一般保持默认即可。
    • paramiko_connection:定义python的paramiko模块相关的配置优化参数,默认即可。
    • ssh_connection:定义SSH配置参数。
            pipelining = False    #默认为false,定义为true时,ansible通过管道的方式,减少在远程被管理机器上执行任务模块过程的SSH连接数量,来提高性能,如果需要使用sudo切换用户的话,需要在被管理服务器/etc/sudoers中定义Disable requiretty
     
    • acceleerate:定义具体的端口、超时时间等参数,默认即可。
    • selinux:定义文件系统的安全上下文设置,正常情况下操作将复制现有的安全上下文或者使用用户默认,对于某些文件系统,需要文件依照该文件系统中的上下文权限来继承,默认的例外的文件系统是nfs,vboxsd,fuse,ramfs,一般默认配置即可。
     
    Inventory定义格式
    使用-i参数指定inventory(主机清单)文件的路径,默认在ansible中定义的inventory路径为/etc/ansible/hosts。
    支持主机名、ip、主机分组、简单正则、变量参数、主机分组之间的包含关系。
    [dbservers]    #定义了一个主机组,执行任务时可以指定某个主机组
    db.example.com    #定义被管理主机名称,注意该主机需要能被dns解析为ip地址,比如内网地址的名称和ip,写入host,也是可以的。
    192.168.1.100    #定义被管理服务器的ip地址。
     
    [gameservers]
    gs[1:5]    #使用通配符匹配主机,将包括gs1,gs2...gs5。5台主机
    192.168.2.[101:105]    #定义主机ip地址时,也可以使用数字通配符
     
    [dnsservers]
    dns.sh[a:b].example.com    #支持字母匹配,得到两台主机dns.sha.example.com和dns.shb.example.com
     
    [test01]
    192.168.2.103 ansible_connection=ssh ansible_ssh_user=root ansible_ssh_pass=P@ssw0rd    #为特定的参数赋值,此处定义了连接类型,ssh用户名和密码。
    192.168.2.104 vsftpd_port=2121    #自定义变量,在playbook中可以引用。
     
    [test02]
    192.168.2.105
    192.168.2.106
    [test02:vars]    #为一组主机定义相同的变量参数
    ansible_connection=ssh
    ansible_ssh_user=root
    ansible_ssh_pass=P@ssw0rd
     
    [testserver:children]    #定义主机组testserver其中包含test01,test02两个分组
    test01
    test02
     
    #所有的主机都包含在all分组中,慎用ansible all -m modules
     
    inventory定义中有常用的自带变量
    ansible_ssh_port:    #定义连接主机的ssh端口
    ansible_ssh_user:    #定义连接到主机的ssh用户
    ansible_ssh_pass:    #定义连接到主机的ssh密码
    ansible_sudo_pass:    #定义sudo的密码
    ansible_connection:    #定义ansible的连接类型,可以是local、ssh或paramiko
    ansible_ssh_private_key_file:    #定义私钥路径
  • 相关阅读:
    Uva 11401 数三角形
    Uva 11538 象棋中的皇后
    数学基础——基本计数方法
    八数码问题
    python 爬poj.org的题目
    python 爬图片
    hiho 第135周 九宫
    Uva 11464 偶数矩阵
    BZOJ 1001 [BeiJing2006]狼抓兔子
    LA 3708 墓地雕塑
  • 原文地址:https://www.cnblogs.com/ccielife/p/12502983.html
Copyright © 2011-2022 走看看