zoukankan      html  css  js  c++  java
  • ansible 入门学习(一)

     一,ansible 目录结构

    (来自于ansible权威指南)

    二,ansible.cfg 配置项说明

    /etc/ansible/ansible.cfg -->

    ————————————————————————————————————————————————————————————

    • ANSIBLE_CFG 环境变量,可以定义配置文件的位置
    • ansible.cfg 存在于当前工作目录
    • ansible.cfg 存在与当前用户家目录
    • /etc/ansible/ansible.cfg

    ansible 配置文件默认存使用 /etc/ansible/ansible.cfg
    hosts文件默认存使用 /etc/ansible/hosts

    [defaults]

    配置说明
    #inventory = /etc/ansible/hosts 指定主机清单文件
    #library = /usr/share/my_modules/ 指定模块地址
    #remote_tmp = $HOME/.ansible/tmp 指定远程执行的路径
    #local_tmp = $HOME/.ansible/tmp ansible 管理节点得执行路径
    #forks = 5 置默认情况下Ansible最多能有多少个进程同时工作,默认设置最多5个进程并行处理
    #poll_interval = 15 轮询间隔
    #sudo_user = root sudo默认用户
    #ask_sudo_pass = True 是否需要用户输入sudo密码
    #ask_pass = True 是否需要用户输入连接密码
    #transport = smart  
    #remote_port = 22 远程链接的端口
    #module_lang = C 这是默认模块和系统之间通信的计算机语言,默认为’C’语言.
    #module_set_locale = True  
    #gathering = implicit  
    #gather_subset = all 定义获取fact的子集,默认全部
    #roles_path = /etc/ansible/roles 角色存储路径
    #host_key_checking = False 跳过ssh 首次连接提示验证部分,False表示跳过。
    #stdout_callback = skippy  
    #callback_whitelist = timer, mail  
    #task_includes_static = True  
    #handler_includes_static = True  
    #sudo_exe = sudo sudo的执行文件名
    #sudo_flags = -H -S -n sudo的参数
    #timeout = 10 连接超时时间
    #remote_user = root 指定默认的远程连接用户
    #log_path = /var/log/ansible.log 指定日志文件
    #module_name = command 指定ansible默认的执行模块
    #executable = /bin/sh 用于执行脚本得解释器
    #hash_behaviour = replace 如果变量重叠,优先级更高的一个是替换优先级低得还是合并在一起,默认为替换
    #private_role_vars = yes 默认情况下,角色中的变量将在全局变量范围中可见。 为了防止这种情况,可以启用以下选项,只有tasks的任务和handlers得任务可以看到角色变量。
    #jinja2_extensions = jinja2.ext.do,jinja2.ext.i18n jinja2的扩展应用
    #private_key_file = /path/to/file 指定私钥文件路径
    #vault_password_file = /path/to/vault_password_file 指定vault密码文件路径
    #ansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host} 定义一个Jinja2变量,可以插入到Ansible配置模版系统生成的文件中
    #display_skipped_hosts = True 如果设置为False,ansible 将不会显示任何跳过任务的状态.默认选项是显示跳过任务的状态
    #display_args_to_stdout = False  
    #error_on_undefined_vars = False 如果所引用的变量名称错误的话, 是否让ansible在执行步骤上失败
    #system_warnings = True  
    #deprecation_warnings = True  
    #command_warnings = False  
    #action_plugins = /usr/share/ansible/plugins/action action模块的存放路径
    #callback_plugins = /usr/share/ansible/plugins/callback callback模块的存放路径
    #connection_plugins = /usr/share/ansible/plugins/connection connection模块的存放路径
    #lookup_plugins = /usr/share/ansible/plugins/lookup lookup模块的存放路径
    #vars_plugins = /usr/share/ansible/plugins/vars vars模块的存放路径
    #test_plugins = /usr/share/ansible/plugins/test test模块的存放路径
    #strategy_plugins = /usr/share/ansible/plugins/strategy strategy模块的存放路径
    #bin_ansible_callbacks = False  
    #nocows = 1  
    #cow_selection = default  
    #cow_selection = random  
    #cow_whitelist=bud-frogs,bunny,cheese,daemon,default,dragon,elephant-in-snake,elephant,eyes,
    #nocolor = 1 默认ansible会为输出结果加上颜色,用来更好的区分状态信息和失败信息.如果你想关闭这一功能,可以把’nocolor’设置为‘1’:
    #fact_caching = memory fact值默认存储在内存中,可以设置存储在redis中,用于持久化存储
    #retry_files_enabled = False 当playbook失败得情况下,一个重试文件将会创建,默认为开启此功能
    #retry_files_save_path = ~/.ansible-retry 重试文件的路径,默认为当前目录下.ansible-retry
    #squash_actions = apk,apt,dnf,package,pacman,pkgng,yum,zypper Ansible可以优化在循环时使用列表参数调用模块的操作。 而不是每个with_项调用模块一次,该模块会一次调用所有项目一次。该参数记录哪些action是这样操作得。
    #no_log = False 任务数据的日志记录,默认情况下关闭
    #no_target_syslog = False 防止任务的日志记录,但只在目标上,数据仍然记录在主/控制器上
    #allow_world_readable_tmpfiles = False  
    #var_compression_level = 9 控制发送到工作进程的变量的压缩级别。 默认值为0,不使用压缩。 此值必须是从0到9的整数。
    #module_compression = 'ZIP_DEFLATED' 指定压缩方法,默认使用zlib压缩,可以通过ansible_module_compression来为每个主机设置
    #max_diff_size = 1048576 控制--diff文件上的截止点(以字节为单位),设置0则为无限制(可能对内存有影响)

    [privilege_escalation]
    #become=True
    #become_method=sudo
    #become_user=root
    #become_ask_pass=False

    [paramiko_connection]
    #record_host_keys=False
    #pty=False

    [ssh_connection]

    配置说明
    #ssh_args = -o ControlMaster=auto -o ControlPersist=60s ssh连接时得参数
    #control_path = %(directory)s/ansible-ssh-%%h-%%p-%%r 保存ControlPath套接字的位置
    #pipelining = False SSH pipelining 是一个加速 Ansible 执行速度的简单方法。ssh pipelining 默认是关闭,之所以默认关闭是为了兼容不同的 sudo 配置,主要是 requiretty 选项。如果不使用 sudo,建议开启。打开此选项可以减少 ansible 执行没有传输时 ssh 在被控机器上执行任务的连接数。不过,如果使用 sudo,必须关闭 requiretty 选项。
    #scp_if_ssh = True 该项为True时,如果连接类型是ssh,使ansible使用scp,为False是,ansible使用sftp。默认为sftp
    #sftp_batch_mode = False 该项为False时,sftp不会使用批处理模式传输文件。 这可能导致一些类型的文件传输失败而不可捕获,但应该只有在您的sftp版本在批处理模式上有问题时才应禁用

    [accelerate]
    加速配置
    #accelerate_port = 5099
    #accelerate_timeout = 30
    #accelerate_connect_timeout = 5.0
    #accelerate_daemon_timeout = 30
    #accelerate_multi_key = yes

    [selinux]

    配置说明
    #special_context_filesystems=nfs,vboxsf,fuse,ramfs 文件系统在处理安全上下文时需要特殊处理,定义复制现有上下文的文件系统
    #libvirt_lxc_noseclabel = yes 将此设置为yes,以允许libvirt_lxc连接在没有SELinux的情况下工作。

    [colors]
    定义输出颜色
    #highlight = white
    #verbose = blue
    #warn = bright purple
    #error = red
    #debug = dark gray
    #deprecate = purple
    #skip = cyan
    #unreachable = red
    #ok = green
    #changed = yellow
    #diff_add = green
    #diff_remove = red
    #diff_lines = cyan

    配置來源:简书

     三,ansible使用

    01)配置host-----------》

    02)参数说明

      ansible <host-pattern> [options]

      <host-pattern> 这个就是Inventroy中定义的主机或者主机组  <> 这个选项内容是必须要有的

      [options]是Ansible参数选项   [ ]任选参数

      -m    NAME,--module-name=NAME:执行使用的模块

      -u  USERNAME,--user=USERNAME  指定远程主机以USERNAME执行

      -s    --sudo:相当于sudo

      -U SUDO_USERNAME,--sudo-user=SUDO_USERNAME 使用sudo

    ansible all -m ping ----->在这个之前看我expect文章配置ssh+key全网分发,本身是具有分发的,你可以试试

    ok

    三,ansible系列命令详解

    01,ansible

      临时性操作,二次开发接口的调用,没有规律的性的操作

      如ansible all -m ping

      复制文件到目标上

      ansible all -m copy -a “src=/server/seript dest=/tmp/tset owner=root group=root mode=644 backup=yes”

        返回颜色有三种:红色        绿色       橘黄色

          红色:代表执行异常

        

          绿色: 执行成功

        

          橘黄色:执行成功但是目标存在状态变化

          

    02,ansible-galaxy

        这个功能可以理解为git与pip的功能,安装软件

        命令格式

        ansible-galaxy [ init | info | install | list | remove  ] [ -- help ] [ option ]

        001) [ init | info | install | list | remove  ]

             0001)init :初始化本地指定软件的配置

             0002)info : 列表指定的详细信息

             0003)install :下载并安装galaxy指定de软件到本地

             0004)list : 列出本地已下载的指定软件

             0005)remove :删除一下在的指定软件

        002) [ -- help ]

             前面的内容进行帮组

        003)[ option ]

                -f, --force           Force overwriting an existing role

                强制覆盖
                -h, --help            show this help message and exit
                   显示这个帮助信息和退出

                   -c, --ignore-certs    Ignore SSL certificate validation errors.
                    忽略SSL证书验证错误。

               --init-path=INIT_PATH
                                  The path in which the skeleton role will be created.
                                  The default is the current working directory.

                 默认值是当前工作目录。
                 --offline             Don't query the galaxy API when creating roles

               离线时,在创建角色时不要查询galaxy API
                --role-skeleton=ROLE_SKELETON
                                 The path to a role skeleton that the new role should be based upon.

    03,Ansible-pull

        pull工作模式(ansible默认使用push模式)

        适合场景:1,机器数量巨大需要配置,效率高,

             2,在刚刚启动的,没有网络上的主机运行

    04,Ansible-doc

        Ansible模块文档说明,相当于linux  man

              

    05,Ansible-playbook

        使用率超级高的模块

          工作机制:通过读写预编译的playbook文档实现批量管理

        play具有编写简单,可定制性高,灵活方便,可以固话日常所有操作,

    06,Ansible-vault

        用于配置文件加密

     格式:   

     ansible-vault  [ create | decrypt | edit | encrypt | encrypt_string | rekey |view ] [ options ] [vaultfile.yml]

    07,ansible-console

       用户交互式工具

    四,host

       ansible的配置主机配置文件默认在/etc/ansible/hosts

      

      在执行 的时候我们是可以指定文件读取的

        

      - i  参数或者 --inventory-file

      

       定义主机的内容配置

      1)直接为IP

        

      2)既可以有IP 也可以有hostname

        

      3)支持多台一起写

        

      4)可以是数据库

        

      inventroy  ssh 相关参数

        ansible_ssh_host:指定连接的主机 

        ansible_ssh_port:指定ssh连接端口

        ansible_ssh_user:指定ssh连接用户

        ansible_ssh_pass:指定ssh连接密码

        ansible_sudo_pass:指定连接的sudo密码

        ansible_ssh_private_key_file:指定特有的私钥文件

    五,ansible正则

      1)匹配所有aLL

      ansible all  -m  ping

                    -->两者是一样的表示所有主机

      ansible “*” -m ping

      ansible 10.0.0.* -m ping 

        扫描存活ip

         

      2) 逻辑或(or)

        ansible 中或使用  :  表示

        

      3)逻辑非(!)

        表示在这个组的但是不再另一个组的主机

      4)逻辑与(&)

        表示两个组同时存在的主机

       5)模糊匹配

        * 匹配0个或多个任意字符

       6)域切割

         python切割方式差不多

         【server】

           10.0.0.0 

             10.0.0.1

           10.0.0.1

          server[0] ==>10.0.0.0

          server[-1] ==>10.0.0.2

           server0:1] ==>10.0.0.0,10.0.0.1

          server[1:] ==>10.0.0.1,10.0.0.2

       7)正则

         对主机进行正则匹配

    六,Ansible AD-Hoc命令集用法

        及命令行执行

       

    • -v,--verbose:输出更详细的执行过程信息,-vvv可得到执行过程所有信息。
    • -i PATH,--inventory=PATH:指定inventory信息,默认/etc/absible/hosts。
    • -f NUM,--forks=NUM:并发线程数,默认5个线程。
    • --private-key=PRIVATE_KEY_FILE:指定密钥文件。
    • -m NAME,--module-name=NAME:指定执行使用的模块。
    • -M DIRECTORY,--module-path=DIRECTORY:指定模块存放路径,默认/usr/share/ansible,也可以通过ANSIBLE_LIBRARY设定默认路径。
    • -a 'ARGUMENTS',--args='ARGUMENTS':模块参数。
    • -k,--ask-pass SSH:认证密码。
    • -K,--ask-sudo-pass sudo:用户的密码(--sudo时使用)。
    • -o,--one-line:标准输出至一行。
    • -s,--sudo:相当于Linux系统下的sudo命令。
    • -t DIRECTORY,--tree=DIRECTORY:输出信息至DIRECTORY目录下,结果文件以远程主机名命名。
    • -T SECONDS,--timeout=SECONDS:指定连接远程主机的最大超时,单位是秒。
    • -B NUM,--background=NUM:后台执行命令,超NUM秒后中止正在执行的任务。
    • -P NUM,--poll=NUM:定期返回后台任务进度。
    • -u USERNAME,--user=USERNAME:指定远程主机以USERNAME运行命令。
    • -U SUDO_USERNAME,--sudo-user=SUDO_USERNAME:使用sudo,相当于Linux下的sudo命令。
    • -c CONNECTION,--connection=CONNECTION:指定连接方式,可用选项paramiko(SSH)、ssh、local,local方式常用于crontab和kickstarts。
    • -l SUBSET,--limit=SUBSET:指定运行主机。
    • -l ~REGEX,--limit=~REGEX:指定运行主机(正则)。
    • --list-hosts:列出符合条件的主机列表,不执行任何命令

    ping 

       

    hostname执行过程信息

      

      

      

    ansible执行流程介绍

      

    列出组的主机列表

     

     对10.0.0.71的服务器以root执行sleep20,设置最大连接超时时长为2S,设置为后台运行

    执行没2s输出一次进度,5s未执行完则退出

    通过命令查看系统设置

      

    shell模块使用

      

     七,ansiable-doc

       ansible-doc  -l  查看能用的模块

       

      

      

     yum 实战:

       

      

      给一台主机安装一个软件

        

      查看命令是否成功

      

      显示的信息:

        changed :主机是否有变更,true为有,false 为没有,第一次安装一般都是ture 否则false

        msg:安装过程

        rc:0 结果返回码

     给负载均衡服务器安装nginx

      

      

      

      

    linux  用户管理

      user模块介绍[转]

      

      

       

     ansible创建用户

      ansible server -m user -a "name=test shell=/bin/bash groups=root append=yes home=/home/test state=present"

      

    修改属主:

      ansible server -m user -a "name=test groups=test append=no"

      

      

    更改用户属性

      设置用户登入过期时间

      

      

    删除用户

      ansible server -m user -a "name=test state=absent remove=yes"

      

      

      没有了

     更改用户密码

      

     下一期见。。。。。。

  • 相关阅读:
    图论初步
    分块和块状链表
    线段树入门
    ST表与树状数组
    [luogu P1312]Mayan游戏
    [luoguP4139]上帝与集合的正确用法


    电解质
    无机盐
  • 原文地址:https://www.cnblogs.com/kingle-study/p/9504841.html
Copyright © 2011-2022 走看看