一、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. 转:common.js 常用js公共函数库

    转自其他博主,自己开发备用 var h = {}; h.get = function (url, data, ok, error) { $.ajax({ url: url, data: data, d ...

  2. Modelsim问题集锦

    前言 收集工程调试中遇到的modelsim问题. 问题 (1)仿真发现时钟信号和理论上的数据信号没有边沿对齐. 解决:一般是时钟精度不匹配的问题. 如果想要1ns的精度则代码中的精度需设置为: v语法 ...

  3. TR-银行主数据相关BAPI

    BAPI_BANKDETAIL_CREATE FI01:BAPI_BANK_CREATE FI12:BAPI_HOUSE_BANK_REPLICATE 1011 Business Object Ban ...

  4. 【leetcode】366.Find Leaves of Binary Tree

    原题 Given a binary tree, collect a tree's nodes as if you were doing this: Collect and remove all lea ...

  5. Song Form

    First of all, song form is an indepentent concept from the boxes, boxes simply describe the way the ...

  6. Vue 前后端分离系统中遇到跨域问题

    https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS I  Your application is running ...

  7. 软件测试_Loadrunner_性能测试_脚本录制_录制多server请求脚本

    之前我们写过使用Loadrunner录制APP脚本的基本流程:软件测试_Loadrunner_APP测试_性能测试_脚本录制_基本操作流程,但是只能用于请求单一服务器端口适用 这次主要是写的多serv ...

  8. 我的 archlinux 内核参数配置

    title Arch Linux linux /vmlinuz-linux initrd /amd-ucode.img initrd /initramfs-linux.img options root ...

  9. tomcat启动之后,Chrome浏览器可以访问,IE不行(IE无法访问8080 端口)

    方法简单粗暴,在windows中关闭IE服务,然后再重新安装服务. 请注意,在输入框输入:  http://localhost:8080/myproject 不要直接输入localhost:8080/ ...

  10. html学习 菜鸟

    1HTML 不是一种编程语言,而是一种标记语言 2只有 <body>区域才会在浏览器中显示. 3<!DOCTYPE>声明有助于浏览器中正确显示网页.doctype 声明是不区分 ...