一,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"

  

  

  没有了

 更改用户密码

  

下一期见。。。。。。

最新文章

  1. SQL 常用脚本
  2. 什么是XA事务
  3. Spring系列之AOP实现的两种方式
  4. aspose words 介绍
  5. RHEL7.2
  6. Ruby FFI 入门教程
  7. android 自定义控件
  8. 匈牙利算法 codevs 2776 寻找代表元
  9. 关于getpw系列函数返回的静态区域
  10. autorun.vbs病毒的清除办法
  11. TortoiseGit- 创建本地新分支,提交推送到远程,本地新分支合并到工作分支,提交到远程工作分支等。
  12. 2017-2018-1 1623 bug终结者 冲刺001
  13. GIT入门文档
  14. [Web 前端] 我不再使用React.setState的3个原因
  15. liunx存储管理之基础知识
  16. 12-部署EFK插件
  17. MVC 开发模式
  18. ASP入门(十五)- Global.asa
  19. android环境安装及配置
  20. 联想ERP项目实施案例分析(10):回到最初再反思IT价值

热门文章

  1. 使用Fiddler进行IOS APP的HTTP抓包
  2. db2中临时表在存储过程中的使用
  3. 【Linux-学习笔记-不定期更新】
  4. http服务 WCF、Web API、Web service、WCF REST之间的区别
  5. java 笔记整理
  6. sql中日期转换
  7. MVC进阶篇(三)——model层数据验证
  8. spring 学习(二):spring bean 管理--配置文件和注解混合使用
  9. 洛谷P2774 方格取数问题(最小割)
  10. JVM高级特性与实践(一):Java内存区域 与 内存溢出异常