导航:首页 > 文件管理 > ansible的hosts配置文件详解

ansible的hosts配置文件详解

发布时间:2022-09-14 19:39:36

⑴ Ansible安装配置和基本使用

http://www.tuicool.com/wx/vUfYVfA

一、ansible 安装

ansible 依赖于python2.6或更高的版本、paramiko、PyYAML及Jinja2。

https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz

将python头文件拷贝到标准目录,以避免编译ansible时,找不到所需的头文件

备份旧版本的python,并符号链接新版本的python

修改yum脚本,使其指向旧版本的python,已避免其无法运行

1.1 编译安装

解决依赖关系

解压安装包

https://github.com/ansible/ansible/archive/v1.7.2.tar.gz

编译安装

拷贝配置文件

1.2 rpm包安装

使用阿里云镜像源即可,这里为了方便使用,就直接使用yum安装了。

Fedora 用户可直接安装Ansible, 但RHEL或CentOS用户,需要 配置 EPEL # yum install -y epel-release # yum install -y ansible

注意:不同版本的ansible的功能差异可能较大。

二、配置

配置文件:/etc/ansible/ansible.cfg

hostfile=/etc/ansible/hosts #指定默认hosts配置的位置 host_key_checking = False #不进行host_key检查,省去目标key发生变化时输入(yes/no)的步骤 ask_pass=True # 每次执行ansible命令是否询问ssh密码 ask_sudo_pass=True # 每次执行ansible命令时是否询问sudo密码

主机清单:/etc/ansible/hosts

程序:ansible、ansible paly-book、ansible-doc

1、将要管理的主机纳入 /etc/ansible/hosts配置文件中,可以填写IP或是主机名

[WebServers] 10.10.10.3 10.10.10.4

2、.基于ssh的方式与被管理的主机进行通信,在管理的主机上(部署ansible的主机上)生成一对非对称密钥,将公钥发给被管理的主机。

a,生成密钥对:ssh-keygen -t rsa

b,将密钥发放到要管理的主机:ssh--id -i 10.10.10.3 或 ssh--id -i /root/.ssh/id_rsa.pub [email protected]

3、使用ansible命令测试

[root@wlm yum.repos.d]# ansible all -m ping 10.10.10.4 | SUCCESS => { "changed": false, "ping": "pong" }

三、基本使用

1、常用命令

ansible-doc 命令:获取模块列表、模块使用格式。

ansible-doc -l :获取列表

ansible-doc -s mole_name:获取指定模块信息

2、ansible 命令格式

ansible <host-pattern> [-f forks] [-m mole_name] [-a args]

<host-pattern> 指明管控主机,以模式表示或者直接指定ip,必须事先指定在文件中;all所有

[-f forks] 指明每批管控多少主机,默认是5个主机一批次

[-m mole_name] 使用何种模块操作,所有操作都需要通过模块指定

[-a args] 指明模块专用参数;args 一般是 key=value格式。注:command模块的参数不是kv模式,而是直接给出要执行的命令。

注意:<host-pattern> 默认读取/etc/ansible/hosts,也可以指明自定义文件路径 -iPATH,--inventory=PATH:指明使用的 host inventory文件路径;

3、常用模块介绍

1、command模块:远程主机上运行命令

例:ansible hosts -m command -a "ls /tmp" 注:command模块也可以省略。

给远程主机添加用户、设置密码:

ansible hosts -a 'useradd user1'

ansible hosts -a 'echo abc | passwd --stdin user1'

2、shell模块:远程主机在shell进程下运行命令,支持shell特性,也支持管道符。

10.10.10.4 | SUCCESS | rc=0 >>

3、模块:把当前主机文件复制到远程主机位置,可以指定mode、own、group

10.10.10.4 | SUCCESS => { "changed": true, "checksum": "", "dest": "/root/abc.txt", "gid": 0, "group": "root", "md5sum": "", "mode": "0644", "owner": "ansible", "size": 15, "src": "/root/.ansible/tmp/ansible-tmp-1484639082.19-114656107854348/source", "state": "file", "uid": 0 }

4、cron模块:在远程主机指定crontab周期性计划任务

minute= hour= day= month= weekday= job= name= (必须填写) state=

ansible all -m cron -a "minute=*/10 job='/sbin/ntpdate 10.10.10.10 & >/dev/null' name=synctime" 可使用crontab -l查看

在管理的主机上可以删除制定的计划任务

10.10.10.4 | SUCCESS => { "changed": true, "envs": [], "jobs": [] }

5、fetch模块:和相反,从远程主机拷贝文件到本地主机

可以不要flat=yes参数,但作用:

当dest=/root/kel/ ,abc.txt会保存在/root/kel/目录下

当dest=/root/kel ,会拷贝abc.txt文件,并命名成kel

6、file模块:file模块包含了文件、文件夹、超级链接类的创建、拷贝、移动、删除

path=/etc/foo.conf owner=foo group=foo mode=0644

src=/file/to/link/to dest=/path/ro/symlink owner=foo group=foo state=link

src=/tmp/{{item.path}} dest={{item.dest}} state=link with_items:

path=/etc/foo.conf state=touch mode="u=rw,g=w,o=r"

path=/etc/foo.conf state=touch mode="u+w,g-w,o-rw"

7、yum模块:用于yum安装安装和卸载

8、service模块:服务管理

9、user/group模块:user模块管理用户;group模块管理group

四、Playbook剧本

playbook 是ansible更强大的配置管理组件,实现基于文本文件编排执行的多个任务,且多次重复执行。playbook组织格式为使用YAML语言来编写的。

playbook 是由一个或多个“play”组成的列表。play的主要功能在于将事先归为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上讲,所谓的task无非是调用ansible的一个mole。将多个play组织在一个playbook中,即可以让他们联通起来按事先编排的机制生效。

1、例子:

在ansible主机上的root目录下创建httpd目录,将本机的httpd.conf文件拷贝到该目录下,修改配置文件里的监听端口是8081

remote_user:root #root前不能有空格

tasks: #任务列表

yum name=httpd state=present #yum后的: 删除掉

src=/root/httpd/httpd.conf dest=/etc/httpd/conf

service name=httpd state=started

注意:yaml文件中支持#;下面的操作要跟上面的name对齐。

测试:

ansible-playbook --check playbook :只检测可能会发生的改变,但不真正执行操作

ansible-playbook playbook :直接执行

ansible-playbook --list-hosts :列出运行任务的主机

2、playbook介绍

设置在特定条件下触发:

a,某任务的状态在运行后为changed时,可通过“notify”通知给相应的handles;

handles:任务在特定条件下触发;接收到其他任务的通知是被触发;

b,任务可以通过“tags”打标签,而后可在ansible-playbook命令上使用-t指定进行调用;

⑵ OpenShift 升级指南

openshift-ansible 为 OpenShift Origin 集群提供了方便的升级手册,在 主版本 之间进行升级绝大部分没有问题。但请注意,从测试版(如 3.7.0-rc.0 -> 3.7.0) 或者小版本(3.6.0 -> 3.6.1) 升级时会有问题。

OpenShift Origin 版本和 openshift-ansible 分支的对照关系表如下:

官方的升级文档请访问 https://docs.openshift.org/latest/install_config/upgrading/index.html

主版本之间除 3.7 到 3.9 版本之间允许跨版本进行升级之外,其他主版本之间不允许跨版升级,具体见如下表格:

我们以 3.6 升级至 3.7 为例来说明。

编辑 ansible 配置文件 /etc/ansible/hosts 并将以下属性并修改为 3.7 版本的相应值。

OpenShift 唯一一次允许跨版本升级是从 3.7.x 升级至 3.9,据官方文档描述,这个升级过程分为两个阶段:

全程自动升级,无需手工干预。不过,从笔者的升级实践上看,社区版进行升级时会由于未自动启用 3.8 的 YUM 软件源而升级失败,提示 Package 'origin-3.8*' not found 的错误。因此在升级之前,我们需要手工设置一下 Origin 3.8 的 YUM 软件源。

将文件 CentOS-OpenShift-Origin38.repo 复制到目录 /etc/yum.repos.d/ 下。文件内容如下:

编辑 ansible 配置文件 /etc/ansible/hosts 并将以下属性并修改为 3.7 版本的相应值。

小版本升级一般不需要变更 Ansible 的 hosts 文件,除非读者在之前的安装时强制指定了 openshift_image_tag 或者 openshift_pkg_version 这两个变量,那么您可能需要手工指定两个版本值或者直接去掉它们。

升级时读者仅需要找到当前主版本对应的升级手册运行即可。我们以 3.7 为例,最开始安装的时候,ansible 自动找到了明细的版本为 3.7.0,后面社区推出了小版本升级包 3.7.1,这时读者仅需要运行 3.7 对应的升级手册即可:

⑶ Linux里面ansible -a命令作用是什么

Ansible是一款系统运维的批量管理服务器软件,下面是批量管理的命令例子:

ansible oldboy -m shell -a 'ps -ef |grep ssh' -k

  1. ansible是命令。

  2. oldboy是主机组(里面包含很多机器)。

  3. -m shell,-m是指定模块,shell就是一个模块。

  4. -a接模块对应参数。'ps -ef |grep ssh',就是模块对应的参数,传给shell解析处理。

⑷ ansible hosts配置ip重复命令会不会重复执行

尊敬的用户,您好!很高兴为您答疑。
这个文件修改后不会及时生回效,需要您重启一答下您的网络,如果有必要,建议重启机器(或虚拟机)。而这个问题与浏览器本身无关,主要是因为您系统的设置未生效所致。
希望我的回答对您有所帮助,如有疑问,欢迎继续咨询我们。

⑸ 使用ansible v2.0 api怎么指定hosts

使用ansible v2.0 api怎么指定hosts
or语句
在C语言中,for语句使用最为灵活,它完全可以取代 while 语句。它的一般形式为:
for(表达式1;表达式2;表达式3) 语句
它的执行过程如下:
1) 先求解表达式1。
2) 求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第3)步;若其值为假(0),则结束循环,转到第5)步。
3) 求解表达式3。
4) 转回上面第2)步继续执行。
5) 循环结束,执行for语句下面的一个语句。

⑹ 如何安装和配置Ansible在Ubuntu 16.04

配置管理系统旨在使管理员和操作团队能够轻松地控制大量服务器。 它们允许您从一个中心位置以自动方式控制许多不同的系统。
虽然有可用于Linux系统,如Chef和Puppet许多流行的配置管理系统,这些往往是更复杂的比很多人都希望或需要。Ansible是一个伟大的选择这些选项,因为它有一个更小的开销开始。
在本指南中,我们将讨论如何在Ubuntu 16.04服务器上安装Ansible,并讨论如何使用该软件的一些基础知识。
Ansible如何工作?
Ansible通过从安装了Ansible组件的计算机配置客户端计算机来工作。
它通过普通SSH通道进行通信,以便从远程计算机检索信息,发出命令和复制文件。 因此,Ansible系统不需要在客户端计算机上安装任何其他软件。
这是Ansible简化服务器管理的一种方法。 任何暴露了SSH端口的服务器都可以被带到Ansible的配置伞下,无论它的生命周期处于什么阶段。
您可以通过SSH管理的任何计算机,也可以通过Ansible管理。
Ansible采用模块化方法,使其易于扩展以使用主系统的功能来处理特定场景。 模块可以用任何语言编写,并以标准jsON进行通信。
配置文件主要是以YAML数据序列化格式编写的,因为它具有表达性和与流行标记语言的相似性。 Ansible可以通过命令行工具或通过其名为Playbooks的配置脚本与客户端进行交互。
先决条件
要遵循本教程,您需要:
一个Ubuntu的16.04服务器与Sudo非root用户和SSH密钥,您可以通过以下设置初始服务器设置教程 ,包括第4步
第1步 – 安装Ansible
要开始探索Ansible作为管理我们的各种服务器的方法,我们需要在至少一台机器上安装Ansible软件。 我们将使用一个Ubuntu 16.04服务器。
为Ubuntu获取Ansible的最佳方法是将项目的PPA(个人包存档)添加到系统中。 我们可以通过键入以下命令添加Ansible PPA:
sudo apt-add-repository ppa:ansible/ansible

按ENTER接受PPA增加。
接下来,我们需要刷新系统的包索引,以便它知道PPA中可用的包。 之后,我们可以安装软件:
sudo apt-get update
sudo apt-get install ansible

如上所述,Ansible主要通过SSH与客户端计算机通信。 虽然它当然有能力处理基于密码的SSH身份验证,SSH密钥帮助保持简单。 您可以按照先决条件中链接的教程来设置SSH密钥(如果您还没有)。
我们现在拥有通过Ansible管理我们的服务器所需的所有软件。
第2步 – 配置Ansible主机
Ansible通过“hosts”文件跟踪它所知道的所有服务器。 我们需要先设置此文件,然后才能开始与我们的其他计算机通信。
使用root权限打开文件,如下所示:
sudo nano /etc/ansible/hosts

你会看到一个文件有很多示例配置,没有一个将真正为我们工作,因为这些主机组成。 因此,首先,我们通过在每行之前添加一个“#”来注释掉这个文件中的所有行。
我们将在文件中保留这些示例,以帮助我们进行配置,如果我们希望在将来实现更复杂的场景。
一旦所有的行都注释掉,我们可以开始添加我们的实际主机。
hosts文件相当灵活,可以通过几种不同的方式进行配置。 我们将使用的语法看起来像这样:
主机文件示例
[group_name]
alias ansible_ssh_host=your_server_ip

group_name是一个组织标记,可让您使用一个字来引用下面列出的任何服务器。 别名只是一个引用该服务器的名称。
所以在我们的场景中,我们想象我们有三个服务器,我们将要控制与Ansible。 可以通过键入以下内容从Ansible服务器访问这些服务器:
ssh root@your_server_ip

如果您已正确设置此密码,则不应提示您输入密码。 我们假设我们的服务器的IP地址是192.0.2.1 , 192.0.2.2和192.0.2.3 。 我们将设置这使我们可以把这些单独的host1 , host2和host3 ,或作为一个群体的servers 。
这是我们应该添加到我们的hosts文件来完成这个块:
[servers]
host1 ansible_ssh_host=192.0.2.1
host2 ansible_ssh_host=192.0.2.2
host3 ansible_ssh_host=192.0.2.3

主机可以在多个组中,组可以为其所有成员配置参数。 让我们现在尝试一下。
使用我们当前的设置,如果我们尝试使用Ansible连接到任何这些主机,命令将失败(假设您不是以root用户身份操作)。 这是因为您的SSH密钥是为远程系统上的root用户嵌入的,并且Ansible将默认尝试作为当前用户连接。 连接尝试将获得此错误:
Ansible连接错误
host1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}

在Ansible服务器,我们使用一个名为演示用户。 Ansible会尝试连接到与每个主机ssh demo@server 。 如果演示用户不在远程系统上,这将不工作。
我们可以创建一个文件,告诉“服务器”组中的所有服务器使用root用户进行连接。
要做到这一点,我们将创建在Ansible配置结构称为目录group_vars 。 在此文件夹中,我们可以为要配置的每个组创建YAML格式的文件:
sudo mkdir /etc/ansible/group_vars
sudo nano /etc/ansible/group_vars/servers

我们可以把我们的配置在这里。 YAML文件以“—”开头,因此请确保不要忘记该部分。
/ etc / ansible / group_vars / servers
---
ansible_ssh_user: root

保存并在完成后关闭此文件。
如果你想为每个服务器指定配置细节,而不管组关联的,你可以在把这些信息在一个文件中/etc/ansible/group_vars/all 。 单个主机可以通过在目录下创建文件进行配置/etc/ansible/host_vars 。
第3步 – 使用简单的Ansible命令
现在我们已经设置了主机和足够的配置详细信息,以允许我们成功连接到我们的主机,我们可以尝试我们的第一个命令。
通过键入以下命令来ping您配置的所有服务器:
ansible -m ping all

平滑输出
host1 | SUCCESS => {
"changed": false,
"ping": "pong"
}

host3 | SUCCESS => {
"changed": false,
"ping": "pong"
}

host2 | SUCCESS => {
"changed": false,
"ping": "pong"
}

这是一个基本测试,以确保Ansible已连接到其所有主机。
“all”表示所有主机。 我们可以很容易地指定一个组:
ansible -m ping servers

我们还可以指定单个主机:
ansible -m ping host1

我们可以通过用冒号分隔它们来指定多个主机:
ansible -m ping host1:host2

该-m ping命令的部分是Ansible指令使用“平”模块。 这些基本上是可以在远程主机上运行的命令。 ping模块以很多方式运行,就像Linux中的正常ping实用程序一样,而是检查Ansible连接。
ping模块不会真正采取任何参数,但我们可以尝试另一个命令,看看它是如何工作。 我们通过输入参数传递到脚本-a 。
“shell”模块允许我们向远程主机发送终端命令并检索结果。 例如,要找出我们的host1机器上的内存使用情况,我们可以使用:
ansible -m shell -a 'free -m' host1

Shell输出
host1 | SUCCESS | rc=0 >>
total used free shared buffers cached
Mem: 3954 227 3726 0 14 93
-/+ buffers/cache: 119 3834
Swap: 0 0 0

结论
现在,您应该将您的Ansible服务器配置为与您要控制的服务器通信。 我们已验证Ansible可以与每个主机沟通,我们已经使用了ansible命令来远程执行简单的任务。
虽然这是有用的,我们没有涵盖Ansible的最强大的功能在这篇文章:Playbooks。 我们已经通过Ansible为我们的服务器建立了一个很好的基础,但是当我们介绍如何使用Playbooks来自动化远程计算机的配置时,我们将在以后的文章中进行大量的工作。

⑺ ansible怎么配置ssh参数

1. 执行顺序
配置文件执行顺序:
* ANSIBLE_CONFIG (环境变量)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg

版本1.5以前的执行顺序:
* ansible.cfg (in the current directory)
* ANSIBLE_CONFIG (an environment variable)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg

2.配置文件ansible.cfg中的【default】配置项
Action_Plugins(扩展插件存放目录)
action_plugins = /usr/share/ansible_plugins/action_plugins

Ansible_Managed(插入Ansible模板的字符串)
ansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host}

ask_pass(PlayBook是否需要提供密码,默认为No)
#ask_pass=True

ask_sudo_pass(PlayBook是否需要提供sudo 密码)

#ask_sudo_pass=True

callback_plugins(回调函数插件存放路径)
action_plugins = /usr/share/ansible_plugins/action_plugins

connection_plugins(连接插件存放路径)
action_plugins = /usr/share/ansible_plugins/action_plugins

deprecation_warnings(是否展示警告信息)
deprecation_warnings = True

display_skipped_hosts(是否展示跳过的主机的信息)
#display_skipped_hosts=True

error_on_undefined_vars(执行错误时候赋予的变量)
#error_on_undefined_vars=True

executable(默认的Shell)
#executable = /bin/bash

filter_plugins(拦截器插件)
action_plugins = /usr/share/ansible_plugins/action_plugins

forks(最大进程数)
forks=5

hash_behavior(哈希特性,没事不用去动它)
#hash_behavior=replace

hostfile(资产文件存放位置)
hostfile = /etc/ansible/hosts

host_key_checking(是否检查SSH key)
host_key_checking=True

jinja2_extensions(JinJa扩展)
jinja2_extensions = jinja2.ext.do,jinja2.ext.i18n

legacy_playbook_variables(PlayBook变量)
legacy_playbook_variables = no

library(Ansible默认库)
library = /usr/share/ansible

log_path(日志路径)
log_path=/var/log/ansible.log

lookup_plugins(插件路径)
action_plugins = /usr/share/ansible_plugins/action_plugins

mole_name(默认模块名称)
mole_name = command

nocolor(输出样式)
nocolor=0

nocows(是否使用cowsay打印)
nocows=0

pattern(主机)
hosts=*

poll_interval(pool间隔)
poll_interval=15

private_key_file(私钥的存放路径)
private_key_file=/path/to/file.pem

remote_port(远程连接端口号)
remote_port = 22

remote_tmp(远程目录临时文件夹)
remote_temp = $HOME/.ansible/tmp

remote_user(远程用户)
remote_user = root

roles_path(角色路径)
roles_path = /opt/mysite/roles

sudo_exe(SUDO执行)
sudo_exe=sudo

sudo_flags(SUDO标记)
sudo_flags=-H

sudo_user(sudo用户)
sudo_user=root

timeout(重连次数)
timeout = 10

transport(传输模式)
默认用的smart

vars_plugins(变量插件存放路径)
action_plugins = /usr/share/ansible_plugins/action_plugins

SSH变量
ssh_args(SSH连接参数)
ssh_args = -o ControlMaster=auto -o ControlPersist=60s

scp_if_ssh(采用SCP还是SFTP进行文件传输)
scp_if_ssh=False

⑻ Linux里面ansible作用是什么

Ansible是一款简单的运维自动化工具,只需要使用ssh协议连接就可以来进行系统管理,自动化执行命令,部署等任务。

Ansible的优点

⑼ 使用ansible v2.0 api怎么指定hosts

ansible2.0的api似乎不复能像以前一样传入制一个hosts列表,只能指定某个host文件里的某个组(或者全部组),但是我无法预先写好一个hosts文件和组,因为要操作哪些服务器是在web上输入的。我现在解决的方法是对于传入的hosts列表,遍历后写在一个临时文件里,Inventory指定这个临时文件即可。

⑽ ansible总结

ansible是一种自动化运维工具,基于paramiko开发的,并且基于模块化工作,Ansible是一种集成IT系统的配置管理、应用部署、执行特定任务的开源平台,它是基于python语言,由Paramiko和PyYAML两个关键模块构建。集合了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的.

ansible被定义为配置管理工具,配置管理工具通常具有以下功能:

常用的自动化运维工具技术特性比较:

ansible系统由控制主机和被管理主机组成,控制主机不支持windows平台

部署简单, 只需要在控制主机上部署ansible环境,被控制端上只要求安装ssh和python 2.5以上版本,这个对于类unix系统来说相当与无需配置.

Ansible任务执行模式分为以下两种:

ansible配置文件查找顺序

ansible配置文件
ansible 有许多参数,下面我们列出一些常见的参数:

ansible的主要功用在于批量主机操作,为了便捷地使用其中的部分主机,可以在inventory file中将其分组命名。默认的inventory file为/etc/ansible/hosts。
inventory file可以有多个,且也可以通过Dynamic Inventory来动态生成。

Inventory文件格式:

inventory其他的参数

ansible通过ssh实现配置管理、应用部署、任务执行等功能,因此,需要事先配置ansible端能基于密钥认证的方式联系各被管理节点。

ansible命令使用语法:

例如:

可以通过 ansible-doc -l 列出所有可用的mole,常用的mole有:

ansible -s <mole-name> 可以查看指定mole的用法,或者参看 官方帮助文档 :

playbook是由一个或多个“play”组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓task无非是调用ansible的一个mole。将多个play组织在一个playbook中,即可以让它们联同起来按事先编排的机制同唱一台大戏。

下面是一个简单示例:

playbooks的组成部分

执行过程:

playbook安装配置apache实战

ansilbe自1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单来讲,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们的一种机制。角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中。

一个roles的案例如下所示:

在playbook中,可以这样使用roles:

也可以向roles传递参数:

也可以用条件来使用roles:

ansible运行playbook时会启动很多ssh连接来执行复制文件,运行命令这样的操作.openssh支持这样一个优化,叫做ssh Multiplexing,当使用这个ssh Multiplexing的时候,多个连接到相同主机的ssh回话会共享相同的TCP连接,这样就只有第一次连接的时候需要进行TCP三次握手.

ansible会默认使用ssh Multiplexing特性,一般不需要更改配置,相关的配置项为:

ansible执行过程中,他会基于调用的模块生成一个python脚本,然后将python脚本复制到主机上,最后执行脚本.ansible支持一个优化,叫做pipelining,在这个模式下ansible执行脚本时并不会去复制它,而是通过管道传递给ssh会话,这会让ansible的ssh会话从2个减少到1个,从而节省时间.

pipelining默认是关闭的, 因为他需要确认被管理主机上的/etc/sudoers文件中的 requiretty 没有启用, 格式如下:

ansible开启pipelining方法, 修改ansible.cfg配置文件:

ansible playbook会默认先收集fact信息,如果不需要fact数据可以在playbook中禁用fact采集:

也可以全局禁用fact采集:

另一种解决方案就是使用fact缓存,目前ansible支持下面几种fact缓存:

JSON文件做fact缓存示例
ansible把采集到的fact写入控制主机的json文件中,如果文件已经存在,那么ansible不会再去主机上采集fact

启用JSON文件缓存,修改ansible.cfg文件:

ansible默认并发数是5,可以用下面两种方法修改并发数:

ansible内置多种云计算相关模块,如aws,openstack,docker等,下图是ansible与docker相关的模块:

通过playbook和dockerfile相结合的方式生成镜像, 示例如下:

ansible可以通过docker模块来操作容器,示例如下:

阅读全文

与ansible的hosts配置文件详解相关的资料

热点内容
linux账户设置密码 浏览:69
查看数据库各表记录数 浏览:968
linux查看文件的行数 浏览:692
fpga约束文件如何自动生成 浏览:377
linux打开的文件数 浏览:973
win8修改公用网络 浏览:324
linuxlcrt 浏览:30
编程里res是什么意思 浏览:616
dm80082版本固件 浏览:37
苹果手机用什么可以打开psd文件 浏览:627
服务号和小程序的区别 浏览:888
360手机助手qq文件位置 浏览:693
如何学习数码编程 浏览:60
微信消息发布出去 浏览:377
windows文件名一个个消失 浏览:907
易语言设置文件所有者 浏览:197
iphone手机如何显示wifi密码 浏览:880
文山大数据 浏览:496
3dsrxtools怎么升级 浏览:903
乐高的机器人编程是用什么 浏览:542

友情链接