一、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. 【转载】 腾讯云通过设置安全组禁止某些IP访问你的服务器

    有时候我们在运维网站的过程中会发现一些漏洞扫描者的IP信息,或者个人爬虫网站的IP信息,此时我们想禁止掉这些IP访问到你的服务器,可以通过腾讯云的安全组功能来设置禁止这些IP访问你的服务器,也可以通过 ...

  2. MM-自制件改外购件

    自制件改外购件 https://wenku.baidu.com/view/fbb182c6bb4cf7ec4afed081.html

  3. S5PV210 timer

    TCFG0, R/W, Address = 0xE250_0000 Timer Input Clock Frequency = PCLK / ( {prescaler value + 1} ) / { ...

  4. coco creator编辑动画坑之拖图片

    如图所示,批量选中多张图片之后,拖到右下角的框中,发现有时候可以有时候不行.这个我觉得是个软件的bug 后来经过测试发现只有在粉红色圈的高度才可以正确放入图片,否则都放不了.

  5. node.js 微信开发3-网页授权

    1.配置公众号的自定义菜单,如 { "button":[ { "type":"view", "name":"公 ...

  6. awk 条件及循环语句和字符串函数

    条件语句 if(条件表达式) 动作1 else if(条件表达式) 动作2 else 动作3 循环语句: while循环: while(条件表达式) 动作 do while循环: do 动作 whil ...

  7. 解决 React Native:The development server returned response error code: 404

    解决方法: 打开android/app/build.gradle compile 'com.facebook.react:react-native:+' 修改为: compile ("com ...

  8. HTTP 协议部分常识简介

    1.状态码 具体的状态码可以百度查找,但是对于状态码的大致分类有一个清楚的了解 1XX   ----信息状态码------接受的请求正在处理 2XX ------成功状态码 ------请求正常处理完 ...

  9. 《Python编程:从入门到实践》第五章 if语句 习题答案

    #5.1 major = 'Software Engineering' print("Is major =='Software Engineering'? I predict True.&q ...

  10. selenium xpath定位方式整理

    #xpath定位元素方法: /html/body/div[2] #绝对路径定位 #相对路径定位元素 //* #找到所有的元素 //input #找到input元素 //*[@*] #表示有属性的所有元 ...