一、Ansible 命令

1、Ansible 命令执行的方式有两种:Ad-Hoc、Ansible-playbooks,这两种方式没有本质的区别,Ad-Hoc用于临时执行命令;Ansible-playbooks可以理解为Ad-Hoc的集合,通过一定的规则编排在一起,也就是剧本。

2、Ansible通讯机制是ssh,有秘密和秘钥验证,一般来说都是配置秘钥验证。秘钥配置使用ssh-keygen。

3、使用命令格式:

  ansible  <host-pattent> [options]

解释:

ansible     Ansible命令

<host-pattern>是Inventory中定义的主机名、IP、group组名、具有 "." 或  "*" 或 ":"等特殊字符的匹配型字符串。<>表示该选项是必须。

[options]是Ansible的参数选项,可选参数。

常用选项如下:

-m  NAME,--module-name=NAME:指定执行使用的模块(ansible的功能都是基于模块化的)。

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

-s,--sudo:远程执行命令时使用sudo方式,相当于Linux系统下的sudo命令。

-U  SUDO_USERNAME,--sudo-user=SUDO_USERNAME:sudo 用户

注意:上述的-s和-U选项在新版中已经失效。新版本选项如下两项:

-s,--sudo 被改成 -b,--become

-U,--sudo-user被改成  --become-user

-K, --ask-become-pass:使用--become或者--become-user时使用的密码认证。

-f FORKS, --forks=FORKS:并行线程数量。

-k, --ask-pass:连接到远程主机的密码,当没有使用免密认证时使用

eg:

1、---测试 -m -u选项;-m指定 ping模块,以yjt用户执行ping存活检测。如果不指定用户,在远程机器上默认是以root用户执行。
[root@manager1 ~ ::]#ansible 192.168.4.46 -m ping -u yjt ---注意,ip需要在/etc/ansible/hosts提前里面配置,如果想在多个主机测试,这里可以改成all,当然,前提是需要在hosts文件配置好。
192.168.4.46 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
提示SUCCESS就表示成功了。 2、测试 -b;以yjt用户sudo到root执行ping存活检测。这种方式需要在远程主机的/etc/sudoers文件中配置yjt用户,如果没有配置NOPASSWD,则需要加上-K选项。
远程主机/etc/sudoers文件添加如下:
yjt  ALL=(root)NOPASSWD:   ALL

[root@manager1 ~ 16:26:00]#ansible 192.168.4.46 -m ping -u yjt -b
192.168.4.46 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}

把上诉的yjt  ALL=(root)NOPASSWD:   ALL换成yjt  ALL=(root)   ALL,再次执行

[root@manager1 ~ 16:37:19]#ansible 192.168.4.46 -m ping -u yjt -b
192.168.4.46 | FAILED! => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"module_stderr": "Shared connection to 192.168.4.46 closed.\r\n",
"module_stdout": "sudo: a password is required\r\n",
"msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
"rc": 1
}

发现报错了,这个时候由于远程机器的yjt用户不能免密登录到root用户,所以,执行方式改成如下,加-K(大写)选项


[root@manager1 ~ 16:30:34]#ansible 192.168.4.46 -m ping -u yjt -b -K
BECOME password:     ---输入yjt用户的密码。
192.168.4.46 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}


二、ansible-galaxy

用于从ansible  galaxy官网上传下载roles。

命令用法:

ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [--help] [options]

init:用于初始化本地的roles,以备上传至galaxy。

info:指定roles的详细信息。

install:下载roles到本地。

list:列出本地已经存在的roles。

remove:删除本地已经存在的roles。

eg:下载nginx的roles,默认存放在/etc/ansible/roles

[root@manager1 kvm ::]#ansible-galaxy --ignore-errors install azavea.git
- downloading role 'git', owned by azavea
- downloading role from https://github.com/azavea/ansible-git/archive/0.1.0.tar.gz
- extracting azavea.git to /root/.ansible/roles/azavea.git ---这里存放在了这个目录下。
- azavea.git (0.1.) was installed successfully

三、ansible-pull
远端拉取命令或者剧本,效率无限提升,对运维要求较高
该指令的使用涉及Ansible的另一种工作模式:pull模式(Ansible默认使用push模式)。这和通常使用的push模式工作机理刚好相反,其适用于以下场景:
1、你有数量巨大的机器需要配置,即使使用高并发线程依旧要花费很多时间;2、你要在刚启动的、没有网络连接的主机上运行Anisble
Usage: ansible-pull -U <repository> [options] [<playbook.yml>]
例: */20 * * * * root /usr/local/bin/ansible-pull -o -C 2.1.0 -d /srv/www/king-gw/ -i /etc/ansible/hosts -U git:// git.kingifa.com/king-gw-ansiblepull >> /var/log/ansible-pull.log 2>&1
它是通过通过ansible-pull结合Git和crontab一并实现,其原理如下:通过crontab定期拉取指定的Git版本到本地,并以指定模式自动运行预先制订好的指令
注:ansible-pull通常在配置大批量机器的场景下会使用,灵活性稍有欠缺,但效率几乎可以无限提升,对运维人员的技术水平和前瞻性规划有较高要求

Ansible 模式的更多相关文章

  1. ansible(一)

    Ansible简介 Ansible:Ansible的核心程序Host Lnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等.可以通过fil ...

  2. Ansible 日常使用技巧 - 运维总结

    Ansible默认只会创建5个进程并发执行任务,所以一次任务只能同时控制5台机器执行.如果有大量的机器需要控制,例如20台,Ansible执行一个任务时会先在其中5台上执行,执行成功后再执行下一批5台 ...

  3. Jenkins常用插件介绍

    摘要: 对于中小型运维团队,jenkins作为运维利器,可以解决很多工作中的痛点.基于UI的特性从而让使用者的入门成本很低,基于插件可以具备认证,记录,条件触发以及联动,让运维工程师可以将精力放在业务 ...

  4. 多云容器编排 Karmada-Operator 实践

    作者:vivo 互联网服务器团队-Zhang Rong Karmada作为开源的云原生多云容器编排项目,吸引了众多企业共同参与项目开发,并运行于生产环境中.同时多云也逐步成为数据中心建设的基础架构,多 ...

  5. Ansible系列(七):执行过程分析、异步模式和速度优化

    本文目录:1.1 ansible执行过程分析1.2 ansible并发和异步1.3 ansible的-t选项妙用1.4 优化ansible速度 1.4.1 设置ansible开启ssh长连接 1.4. ...

  6. 【Ansible 文档】【译文】模式

    Patterns 模式 Ansible中的模式是指我们如何决定那些机器执行管理操作.这里意味着与那些主机通信,但是对于playbook,它是指哪些主机应用特定的配置或执行特定程序. 我们将重温一下In ...

  7. ansible的ad-hoc模式

    一.什么是ad-hoc模式 ansible中有两种模式,分别是ad-hoc模式和playbook模式 ad-hoc简而言之,就是"临时命令" 二.ad-hoc模式使用的场景 场景一 ...

  8. ansible playbook模式及语法

    一.什么是playbook及其组成 什么是playbook playbook 翻译过来就是"剧本" playbook的组成 play:定义的是主机的角色 task:定义的是具体执行 ...

  9. Linux中级之ansible概念及hoc命令行调用模式

    一.Ansible简介 ansible是新出现的开源的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统 ...

随机推荐

  1. 基于【 MySql 】二 || mysql详细学习笔记

    mysql重点学习笔记 /* Windows服务 */ -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysql ...

  2. vue动态绘制四分之三圆环

    参照网上的一个案例“参照的为绘制的是一个动态的圆环”,现在我的需求是改编成四分之三的圆环实现效果: 样式展示 canvas绘图基本操作设置就可以参考源代码链接:原文:https://blog.csdn ...

  3. css常用代码大全

    css常用代码大全,html+css代码 html+css可以很方便的进行网页的排版布局,还能减少很多不必要的代码. 一.文本设置1.font-size: 字号参数 2.font-style: 字体格 ...

  4. Apache常见interview

    Apache在Linux系统下的工作模式及特点?如何使Apache使用worker模式? prefork 是一种非线程.与派生的工作模式,用的是进程去处理请求,所以比较容易消耗内存,但是稳定性好,某个 ...

  5. 四:MySQL系列之Python交互(四)

    该篇主要介绍MySQL数据库的分表.以及与Python的交互的基本操作等. 一.拆分表操作 1.1  准备工作 创建数据库 --> 使用数据库 --> 创建数据表 --- 添加记录 -- ...

  6. Java上传图片到服务器

    HTML页面的标签 <div id="div_selectpic" align="right" style="width: 300px;font ...

  7. RT-Thread--线程间同步

    线程间同步 一个线程从传感器中接收数据并且将数据写到共享内存中,同时另一个线程周期性的从共享内存中读取数据并发送去显示,下图描述了两个线程间的数据传递: 如果对共享内存的访问不是排他性的,那么各个线程 ...

  8. charles 手机抓包设置

    本文参考:charles 抓包手机 charles经常会进行手机上的网页抓包,比如去copy别人网站图片或脚本的时候o(∩_∩)o : 手机抓包的原理,和PC类似,手机依靠charles与服务端进行对 ...

  9. 【Leetcode】【简单】【26. 删除排序数组中的重复项】【JavaScript】

    题目描述 26. 删除排序数组中的重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 ...

  10. de4dot - Deobfuscator for .NET

    Features Here's a pseudo random list of the things it will do depending on what obfuscator was used ...