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

  

  

  没有了

 更改用户密码

  

下一期见。。。。。。

ansible 入门学习(一)的更多相关文章

  1. Ansible 入门指南 - 学习总结

    概述 这周在工作中需要去修改 nginx 的配置,发现了同事在使用 ansible 管理者系统几乎所有的配置,从数据库的安装.nginx 的安装及配置.于是这周研究起了 ansible 的基础用法.回 ...

  2. [转帖]Ansible 入门秘诀

    Ansible 入门秘诀 作者: Jose Delarosa 译者: LCTT jdh8383 | 2019-03-08 09:24   收藏: 2 用 Ansible 自动化你的数据中心的关键点. ...

  3. 分享4个运维平台工具OSSIM、Ansible的学习思路

    对于当今企业安全来说,真正价值不在于亡羊补牢,也不在于一个或多个高危漏洞.企业在乎的是如何防患于未然,如何快速定位攻击,如何快速解决安全问题.OSSIM作为开源的安全信息管理平台,对于企业的需求来说毋 ...

  4. vue入门学习(基础篇)

    vue入门学习总结: vue的一个组件包括三部分:template.style.script. vue的数据在data中定义使用. 数据渲染指令:v-text.v-html.{{}}. 隐藏未编译的标 ...

  5. Hadoop入门学习笔记---part4

    紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...

  6. Hadoop入门学习笔记---part3

    2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hado ...

  7. PyQt4入门学习笔记(三)

    # PyQt4入门学习笔记(三) PyQt4内的布局 布局方式是我们控制我们的GUI页面内各个控件的排放位置的.我们可以通过两种基本方式来控制: 1.绝对位置 2.layout类 绝对位置 这种方式要 ...

  8. PyQt4入门学习笔记(一)

    PyQt4入门学习笔记(一) 一直没有找到什么好的pyqt4的教程,偶然在google上搜到一篇不错的入门文档,翻译过来,留以后再复习. 原始链接如下: http://zetcode.com/gui/ ...

  9. Hadoop入门学习笔记---part2

    在<Hadoop入门学习笔记---part1>中感觉自己虽然总结的比较详细,但是始终感觉有点凌乱.不够系统化,不够简洁.经过自己的推敲和总结,现在在此处概括性的总结一下,认为在准备搭建ha ...

随机推荐

  1. c# 解析MP3文件

    不说那么多,网上有很多关于MP3文件说明的. 该C#代码是将C\C++转化过来的,可能存在问题. 如有需要的朋友可以参考. 项目中的文件路径大家自己修改. 下载地址

  2. 关于 href="\\#" 和 return false

    href="\\#"  跳转到本页 return false 相当于不刷新 href="javascript:void(0)"   或者 href=" ...

  3. linux------深入理解linux内核

    linux内核用到了很多数据结构,这些数据结构都是为了提高某些方面的效率. 内核分配给进程的虚拟地址空间由以下内存区组成: 程序的可执行代码 程序的初始化数据 程序的未初始化数据 初始程序栈(即用户态 ...

  4. kali linux之netcat

    网络工具中的瑞士军刀----体积小,功能强大 侦听模式/传输模式 telnet/获取banner信息 传输文本信息,文件,目录 加密传输文件,远程控制/木马,加密所有流量(来做远程控制是非常理想的选择 ...

  5. kali 插耳机没声音

    打开终端,然后输入命令:下载pulseaudio音量控制软件: apt install pavucontrol 然后终端输入指令:pavucontrol打开软件,发现在输出设备中有两个输出设备:一个N ...

  6. bzoj2440完全平方数

    题目链接 上来先吐槽题面!!!!!! 你跟我说$1$不是完全平方数昂? 看了半天样例啊. 活生生的半天$……$ 莫比乌斯 反演    函数容斥一下,每次二分就好 反正本宝宝不知道反演是啥. 每次判断应 ...

  7. JSON的key值为数字时如何使用

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript(Standard ECMA-262 ...

  8. php中的openssl开启方法

    windows下开启方法: 1: 首先检查php.ini中:extension=php_openssl.dll是否存在, 如果存在的话去掉前面的注释符‘:', 如果不存在这行,那么添加extensio ...

  9. 修剪草坪 单调队列优化dp BZOJ2442

    题目描述 在一年前赢得了小镇的最佳草坪比赛后,Farm John变得很懒,再也没有修剪过草坪.现在,新一轮的最佳草坪比赛又开始了,Farm John希望能够再次夺冠. 然而,Farm John的草坪非 ...

  10. JAVA之I/O 输入输出流详解

    简    介 如何在Java中进行文件的读写,Java IO流是必备的知识.这篇博文主要为您带来Java中的输入输出流的内容,包括文件编码.使用File类对文件和目录进行管理.字节流和字符流的基本操作 ...