如何在Ansible Tower中同时运行多个作业?

似乎所有作业都已排队,一次只能运行一个作业。我们如何运行多个任务?假设您的作业包含三个任务: 任务1:“做x”,任务2:“做y”,任务3:“做z” 使用ansible,“dox”将在所有服务器上运行,然后“doy”将在所有服务器上运行,然后“doz”将在所有服务器上运行 另外,我说的是“所有服务”,但事实上它在ansible“forks”值处最大,默认值为5。在我的100服务器环境中,我将该值设置为20。更多信息请点击此处: 记住ansible的优势在于同时在多台机器上完成一项工作(一组任务)。

在Ansible中,如何检查是否安装了特定版本的MySQL?

我有一个Ansible任务,它封装了其他人维护的相当复杂的shell脚本。这个shell脚本安装了一个高度定制的web堆栈,其中许多组件都是从源代码处编译的 每隔一段时间,shell脚本就会将各种组件更新为较新的版本。发生这种情况时,我希望管理这些服务的conf文件的Ansible模板任务失败,这样我就可以手动查看更改的内容 使用Ansible,如何检查已安装版本的内容并将其注册为变量,以便在以后的任务中使用? 示例:MariaDB是从源代码编译的,因此我想创建一个Ansible变量,该变量等于

Ansible playbook不更改文件,但返回成功

我正在使用ansible在25台服务器上禁用selinux - name: disable selinux selinux: state=disabled SERWER是在主机文件中定义的,我正在用 ansible-playbook -v -i hosts ansible/server-prepare.yml 输出如下所示: GATHERING FACTS *************************************************************** ok

Ansible 可复制与同步

使用Ansible Synchronize与Copy模块的优缺点是什么。据我所知,synchronize具有copy所具有的所有功能,但可能要快得多,因此我正在考虑将所有内容更改为使用synchronize。同步的唯一缺点是需要rsync,这在Linux环境中似乎非常普遍。这些区别与传统的rsyncvsscp非常相似。Rsync有更多的特性,通常速度更快,但是它的设置有点复杂,并且有更多的旋钮要转动 此外,缔约国: “复制”模块递归复制功能不能扩展到大量(>数百)文件。有关替代方案,请参阅同步模

Ansible:有sudo但没有根

我想使用Ansible来管理Hadoop集群(运行Red Hat)的配置 我有sudo访问权限,可以手动ssh进入节点执行命令。然而,当我试图运行Ansible模块来执行相同的任务时,我遇到了问题。虽然我有sudo访问权限,但我不能成为root用户。当我尝试执行需要提升权限的Ansible脚本时,会出现如下错误: 抱歉,不允许用户awoolford执行'/bin/bash-c echo' been-SUCCESS-[…]/usr/bin/python /tmp/ansible-tmp-14466

Ansible无法通过指定的私钥连接到主机

以下命令在我的OSX终端上工作: ssh vagrant@192.168.50.100 -i .vagrant/machines/centos100/virtualbox/private_key 我有一个名为“主机”的清单文件,其中包含以下内容: ansible -i hosts all -m ping -v 192.168.50.100 ansible_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/centos100

Ansible在playbook中设置主机名、用户名和密码

我正在尝试编写一个ansible剧本,以便在远程主机上运行命令 是否可以使用游戏内手册编写主机ip、用户名和密码?如果清单文件位于这样的组下,则可以添加主机名: [group-name] 34.67.12.12 - hosts: group-name gather_facts: true sudo: yes vars_files: - "group_vars/group-name/config" roles: - do-bla-bla 然后在剧本yml中,您可

如何防止两个ansible作业在同一台机器上运行?

为了避免意外,我想实现一个解决方案,防止并发部署到同一个目标主机 请记住,我们不想妨碍从我们自己的机器而不是集中管理服务器进行部署的能力 我们只是想确保我们不会同时做同样的事情。您可以检查文件并将文件放到您执行的主机上: tasks: - stat: path=.ansible_lock_file register: lock_file_check - fail: msg="ansible is already being run against this ho

Ansible 在playbook中转换字典键

我有一个现有的playbook变量字典,定义如下: vars: resource_tags: { Name: "some name" Service: "some service" } 这用于此表单中对任务的各种调用。但在另一个任务中,我需要一种不同的格式,而不是硬编码,我想知道它是否可以在任务中构建 我需要它看起来像: { "tag:Name": "some name" "tag:Service": "some service" } 我尝试使

如何使用Ansible挂载fstab上列出的所有分区

在使用Ansible的lineinfle模块向/etc/fstab添加多个装载点之后,我想运行一个简单的mount-a,使它们生效 它确实与 - name: mount all command: mount -a become: true 然而,ansible坚持建议使用mount模块 [WARNING]: Consider using mount module rather than running mount 但在我看来,要做到这一点并不容易 我遗漏了什么吗?你说得对

用Ansible替换文件中的单词

我试图替换文件中的一个字符串。例如: $PASSWORD="oldpassword" 与: 下面是一个可以完成此任务的任务: - name: change password with lineinfile lineinfile: dest: test.txt regexp: '^$PASSWORD=' line: '^$PASSWORD="newpassword"' state: present backrefs: yes 不幸的是,我找不到它

Ansible与RationalTeamConcert的集成

我们正在处理bigdata,并使用RTC检入我们的代码。我们正在使用Ansible部署代码,将包从nexus部署到目标服务器。它还涉及执行签入RTC的SQL脚本。我的问题是如何将Ansible与RTC集成,因为我认为Ansible没有任何模块支持这一点?我希望ansible从RTC中选择sql脚本,并在目标数据库上执行它。我怎样才能做到这一点?如果不可能,我还应该尝试什么 谢谢 阿披舍克·索马尼只要您的目标服务器拥有,它就拥有像这样的处理命令 可以使用scmload命令,并且可以从Ansible

Ansible即席命令请求vault密码

今天下午,当运行ansible临时命令时,我开始被提示输入vault密码 这个过程不应该需要这个,而且以前从未需要过 我只是在做类似的事情 ansible prod_servers -m shell -a "ls -al /var/logs/" --sudo 我只需要提供密码,命令就可以了,但这让我发疯了 我们使用的是ansible 1.8.4(不要问):(检查清单中组变量/主机变量下的vault文件–这应该是临时命令可能出现密码提示的唯一原因。在运行ansible命令的目录中是否有ansib

Ansible局部行动指令

我对Ansible很陌生,有一个简单的问题需要我理解local\u action指令 这是否意味着命令在本地完全执行?假设你有这样的东西: local_action: command which nginx register: check_nginx failed_when: no changed_when: no local_action: command ping -c 1 {{ inventory_hostname }} 然后你会看到另一个区块在寻找nginx的存在,类似于: - fa

当断言作为ok传递时,抑制ansible断言上的额外消息?

任何时候ansible中的断言被传递,我都会得到这样一个详细的输出 ok: [v-sax-769-e-a.develop.ebiz.grp] => { "changed": false, "failed": false, "msg": "All assertions passed" } 是否可以抑制(仅对于成功的)断言?第一行以ok开头。。。那就足够了 我看到过关于此功能的旧邮件,并要求提供此功能,但在ansible的文档中,我找不到标志或类似的东西。有一个问题:

Ansible:删除文件夹中的所有文件和目录,而不是文件夹本身

我正在尝试运行一项任务,该任务将删除我的project fiolder的所有内容,而不删除文件夹本身: 我的文件夹:appFolder----包含-->文件1、文件2。。。文件,目录1…目录 我曾尝试使用ls,fileGlob,但没有正常工作 - name: delete old version files file: path: "{{ paths }}" state: absent with_filesglob: - "{{paths}}deletes/*" 还有

Ansible 易变双环

我有一个yml文件中的数据列表。 我想提取数据,使用双循环,就像我们以前做的那样。 这是我的清单的一个例子 [a,b,c] vm1: -a -b vm2: -a -c vm3: -b 这是用于一般部署目的。 我需要循环列表,对于每个元素,获取需要安装的vm的列表。 比如说 a > vm1 vm2 b > vm1 vm3 c > vm2 我试过了,但没用。 有什么办法解决这个问题吗?这个问题很类似于 下面是修改后的JMESPath: --- - hosts: local

在Ansible中,表示非root登录用户的变量是什么?

当我在ansible脚本中使用{{ansible\u user\u id}时,每当使用been=true执行脚本时,它就会出现故障,并且总是转换到根目录中 我需要将它转换为登录到远程操作系统的真实登录用户。在这种情况下我应该使用什么变量?答案 ansible\u ssh\u user包含连接用户的名称 其他方式/澄清 ansible\u user\u id包含执行设置任务的用户(或在收集事实:true时隐式使用),因此: 您可以设置collect\u事实:false,然后使用been:fals

Ansible:如何包括所有主机,但在特定主机上运行角色?

我试图包括所有主机,因为我想在其他主机配置中使用一个主机事实 但我有 所有人的共同任务 两组的常见任务 单个组的任务 当我尝试以下方法时,所有任务都在所有主机上运行。我如何确保在特定组中应用角色 - hosts: Local:Global:Stream tasks: - include_role: name: global when: host in groups['Global'] - include_role: name: local

覆盖Ansible play中的ip地址或主机标签

在我的个人网络上,我有一个简单的主机列表: [host1] 192.168.1.2 [host2] 192.168.1.10 当我设置本地主机时,比如“host2”,它有一个随机(dhcp)IP地址。我已经更改了hosts.ini并覆盖了主机IP地址,然后我使用hostvars将我想要的IP地址设置到它的dhcpcd.conf中 我的游戏有我所有的本地机器,所以我需要主机标签来匹配。但是,如果没有一些手动操作,我无法在第一次开机时使用它 我可以想出一些变通办法: 在ansible playbo

在Ansible的vars_提示符中将变量用作默认值

我试图在Ansible中使用vars\u prompt,默认值取自事实(或以前定义的变量)。playbook计划用作初始资源调配的临时手册 我的剧本: --- - hosts: server01 gather_facts: True vars_prompt: - name: new_hostname prompt: please enter the name for the target default: "{{ ansible_hostname }}"

Ansible词典能指代它们自己吗?

我试图在每台机器上本地构建特定的软件。playbook将下载源tarball(使用),配置并构建它 我想将要构建的项目列表定义为如下所示: srcpkg: 蟒蛇: 版本:“3.7.0” sha:“0382996D1EE6AAFE597634426CF0139 FFEBE3698474D0EC4126DD1C40A8B3549” url:“https://www.python.org/ftp/python/{{srcpkg.python.ver}/python/python-{{srcpkg.py

Ansible 第二个角色执行覆盖默认参数值

我有一个ansible角色,它定义了两个参数和第二个参数的默认值 角色/上游/tasks/main.yml: --- - debug: msg: "Parameter in upstream is {{param}} and param2 is {{param2}}" --- param2: [] 角色/upstream/defaults/main.yml: --- - debug: msg: "Parameter in upstream is {{param}} and p

如何使用mv模块Ansible

我正在尝试使用Ansible上的mv模块,但我没有运气 在我最初的尝试中,我做了以下几点: - name: changing the name of the file shell: mv /tmp/bundle /opt/Rocket.Chat - name: create directory file: state: directory path: "/opt/Rocket.Chat" - name: copy the fi

Ansible 如何使用标识折叠多行yaml字符串

(在给出答案之前,请记住我已经尝试了和-,但都没有成功) 我想在易变变量方面做些花哨的事。我希望有一个格式良好的SQL(伪SQL)查询可以折叠成一行,而不需要新行字符 我的问题是,如果字符串具有标识,运算符不起作用 --- - hosts: localhost gather_facts: no tasks: - debug: var=foo vars: foo: > select foo from bar where ok

如何使用ansible module proxmox_kvm调整硬盘大小

我已经创建了一个8Gb disksize ProxMox VM模板。使用ansible module proxmo_kvm,我克隆了它,但无法调整SCSI磁盘的大小。有可能吗?如果是的话,你能给我一些解释,让我明白是怎么回事吗 项目文件层次结构: . ├── playbook.yml └─── proxmox-vm/    ├── tasks/    │   └── main.yml    └── vars/    └── main.yml playbook.yml: - ho

Ansible 寻找可转换模块

在这种情况下,我们需要在特定路径中比较两个版本,并且需要更改符号链接并指向更大的版本 例如:路径=/apps/share ls-轻轨 8.5.38 8.5.39 当前-->8.5.39 我需要比较以上两个版本,并将符号链接指向更大的版本。我的问题是Ansible中是否有一个模块可以比较两个版本Ansible确实有一个测试。您可以使用类似于: - debug: msg: "version is newer" when: new_version is version(old_versio

Ansible 任务中有多个with_项的问题

我有一个任务,它有多个with_项,因此在委托中选择最新定义的项,这不是预期的结果 - name: Add secondaries run_once: true delegate_to: "{{ item }}" with_items: - "{{ groups['mongodb-active'] }}" shell: /usr/bin/mongo --eval 'printjson(rs.add("{{ item }}:27017"))' with_items:

Ansible 如何跟踪无人值守升级或云初始化的进度?

我希望使用Packer(构建图像)和Ansible(provisioner)来提供Ubuntu AMI “名称”:“ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*”, 我遇到了一些困难,因为有些任务试图使用apt安装软件包,但锁被另一个进程持有。我很难确定哪些流程处于锁定状态最重要的是,特定流程的进展情况如何 默认情况下,amazon设置的AMI将在启动[0]时安装安全更新,因此我假设就是这样。正如文档所解释的,它可能与cloud init有关

ansible:使用来自另一台主机的变量在同一台主机上多次运行任务

ansible新手,找不到关于我的问题的参考资料,这似乎并不罕见 我在同一个组下有两个主机,每个主机都有它的变量,比如: [myHosts] host1 a=1 b=10 host2 a=2 b=20 现在,我有一个任务只需要在host1上执行两次,一次使用host1的变量,第二次使用host1中的a,以及host2中的b。 如果我这样写: - role: my_role vars: a_val: {{ a }} b_val: {{ b }}

OKD openshift ansible:更新';openshift_master_cluster_public_hostname';及证明书

我已经部署了Openshift,并且工作正常,但是现在我正在将一个DNS记录和一个有效的证书放在它前面。我没有任何运气,也没有找到任何关于这样做的文档 我更新主机名的策略是在主/节点配置的所有文件中使用新的公共主机名sed现有的公共主机名,但这似乎不起作用 我是否需要使用/更新特定的剧本/目录字段,以便从Ansible master轻松更新 更新:在使用以下内容更新库存文件后,我运行了“openshift master/redeploy certificates.yaml”: openshif

Ansible:在locahost中输出文件并将其注册为变量

我正在尝试创建一个剧本,其中创建的证书应作为变量添加,以从中创建模板。 创建的证书为*.pem格式,驻留在ansible localhost中。 我需要对这些文件进行cat,并将内容作为变量加载,如x_cert、y_key等。我尝试了shell:cat和register方法,该方法运行良好,但由于证书数量较多,因此不建议使用此方法,我正在搜索任何基于模块的方法 尝试了查找和slurp,slurp只在远程主机上工作,我希望它在本地主机上工作。我使用的查找不起作用。不确定 有人能解释一下吗 Slur

Ansible 在继续运行手册的其余部分之前,如何将有关远程主机的自定义事实存储在一起?

我正在用Ansible编写一个集群供应剧本,要求每个节点在安装时配置其他节点的公共证书。我想不出一个简单的方法来告诉ansible: 去拿远程证书 把他们推到名单上 使这些证书摘要可供每个远程节点使用,以生成经授权的节点列表 目前,考虑到集群节点的数量很少,我将手工完成这项工作(将第一个剧本的输出复制到第二个剧本的变量中)但如果有一种方法可以在一个剧本中做到这一点,那将是非常有帮助的。我的回答将尽可能笼统:将一个事实存储在组中的一台特定机器上,并从另一台机器读取组中所有机器的该事实 我想当然地认

带shell模块的剧本中的Ansible命令

我可以在ansible中使用以下内容吗: --- - hosts: webserver gather_facts: False tasks: - name: Check ping shell: ansible -i localhost.yml -m shell -a 'ping' 该本地主机包含所有主机,而playbook将在Web服务器上运行 实际需求是在webserver上运行,而在一个任务中,我需要在主机文件中指定的所有主机上运行命令 提前谢谢 只需添加以

Ansible-环境变量剧本

我需要在目标机器中设置环境。环境变量存在于名为.env的文件中。该文件中有几个变量,如 export AB_HOME=/tl/dev/abinit/abinit-V3 #/gcc3p32 # for 32-bit export PATH=${AB_HOME}/bin:${PATH} 我尝试了下面的剧本来设置环境并注册环境变量,以便在environment关键字中使用它们 - hosts: dev gather_facts: false tasks: - name:

Ansible 当var1语句包含在var2中时(可以这样做吗?)

这行不通 播放[127.0.0.1]*********************************************************************************** 任务[在var2中测试var1]******************************************************************** 致命:[127.0.0.1]:失败!=>{“msg”:“条件检查“var1在var2中”失败。错误是:({%if var1在v

Ansible命令行限制参数

通过命令行调用Ansible playbook时,下面的命令outer:local:dns将搜索或执行什么操作 ansible playbook——限制外部:本地:dns我想你可以用谷歌搜索一下。 传递给--limit的值是Ansible playbook将应用到的主机名或主机组。 您可以。命令outer:local:dns是一种模式,指的是资源清册中的多个组。 将此模式与--limit耦合意味着将为组外部、组本地和组dns执行剧本 有关ansible模式的更多信息,请参见此

Ansible:合并2个组中的服务器变量不起作用

我使用的是ansible 2.9.6,目前我只有一台服务器,但它位于主机文件的两个组内。我为每个应用不同防火墙规则的组配置了ufw,当我运行“db_服务器”组的playbook时,它会从“web_服务器”组中获取VAR(ufw_规则)。考虑到服务器具有相同的名称,我希望vars至少能够合并。但是,如果我在相同的服务器组中为它们指定不同的名称“node_w”和“node_d”,那么它将与该组的相应变量一起工作。我没有导致问题的主机变量集 [web_servers] node1 ansible_ho

从远程服务器复制文件并使用ansible替换字符串

我知道您可以使用ansible将文件从远程服务器复制到本地服务器。您甚至可以使用一些与从中获取的节点相关的变量来命名文件。我想做的是在复制文件后替换该文件上的某些字符串,理想情况下使用库存变量。这可能吗?是否有不涉及后处理bash脚本的解决方法?在获取文件后,只需通过任务向localhost进行委派即可 给定/tmp/somefile 还有剧本: -主机:所有 收集事实:不 任务: -获取: src:/tmp/somefile 目的地:/tmp/已提取 -替换: 路径:/tmp/fetched/

在ansible中重用模板化变量

我有一组任务,需要一个通用的变量列表。 这种列表的问题在于,它需要对每个任务进行一定的定制。 公共块是docker容器的标签列表(因此它们由traefik发现)。 我可以将标签列表放在剧本的vars部分的一个变量中,但它只会被评估一次,我希望每个任务都使用一组新的变量重新评估它 这是标签列表(ansible格式): 标签: -“traefik.enable=true” -“traefik.backend={{service_name}}” -“traefik.frontend.rule=Host

ansible资源清册--列出主机组命令行

我想从ansible清单中获得主机组名列表(仅限),但是我必须使用grep根据已知的组名模式来缩减列表-例如 输出干净但命令行混乱,需要提前了解组名模式: ansible inventory-i inventory/production-list-yaml | grep webserver.*:$ 清理命令行,不需要知道组名模式,但输出混乱: ansible playbook my-playbook.yml-i库存/生产--列出主机 是否有一种干净的方法从库存中提取组名 示例hosts.

Ansible防止标准输出显示在输出日志上

我有这个任务,我试图猫与密码的文件,并附加到另一个文件通过ansible stdout - name: get password value shell: "cat {{ playbook_dir }}/../PASSWORD/PASSWORD.txt" register: PASSWORD_VALUE - debug: var=PASSWORD_VALUE.stdout - name: echo PASSWORD password value to anothe

Ansible Inventory:如何从不在某些其他组中的主机构建组

我正在寻找一种方法来构建一个清单组,其中包括所有尚未放入另一个组的主机 在我的例子中,这些小组确定某个特定服务器应该在什么时候更新——要么在周一、周三、周五,要么“任何一天都不重要”。我不想显式地枚举主机,因为这是手动工作,而且容易出错 all: hosts: host1[1-100].example.com: children: updateMonday: hosts: host1.example.com: host4.exa

  1    2   3   4   5   6  ... 下一页 最后一页 共 189 页