在Ansible中的多个角色之间共享默认值?

我想在Ansible中分享不同的角色。有没有可能直接做到这一点?是否有一种解决方法,或者是另一种方法来解决这个问题?我只想保持默认值不变。您是否尝试将这些变量放入/etc/ansible/group\u vars/all 发件人: 站点范围的默认值应定义为“组变量/所有”设置

ansible:与带有通知处理程序的\u项一起使用

我想将一个变量传递给通知处理程序,但在这里找不到它,因此,github repo中的文档或问题,如何做到这一点。我正在做的是部署多个webapp,当其中一个webapp的代码发生更改时,它应该重新启动该webapp的服务 从,我得到了这个工作,有点: - hosts: localhost tasks: - name: "task 1" shell: "echo {{ item }}" register: "task_1_output" with_items: [a

Ansible剧本中的Jinja2

我怎样才能把收集到的事实循环成一本易懂的剧本? 我试过: 但这不起作用,它会导致语法错误。甚至可以在剧本中使用jinja吗 我使用ansible galaxy角色(info.haproxy),我不想更改提供的模板。不,你不能这样做 这必须在模板中完成,例如: 模板/haproxy.cfg.j2: ... {% for host in groups['app-servers'] %} backend {{ hostvars[host]['ansible_hostname'] }} server

我如何让Ansible忽略失败的焦油球提取?

我在ansible剧本中有一个命令: - name: extract the tarball command: tar --ignore-command-error -xvkf release.tar 由于某些文件已经存在(-k标志),因此预计不会提取这些文件 但是,这会导致ansible停止整个剧本,因为tar提取中有一个错误代码 我怎样才能解决这个问题?如您所见,我尝试了--忽略命令错误,但没有效果。您想使用忽略错误参数: - name: extract the tarball c

如何在ansible中创建动态变量

真正的场景是,希望在AWS中获得sqs的资源id,该id将在执行剧本后返回。因此,在文件中使用此变量来配置应用程序 将变量从一个剧本持久化到另一个剧本 查看文档时,set_fact和register等模块仅适用于该特定主机。从一个主机到另一个主机使用变量有很多目的 我能想到的备选方案有: 使用命令模块并将变量回显到文件中。稍后,使用变量文件usingvars部分或include 设置环境变量,然后访问它,但这将是困难的 那么解决方案是什么呢 您可以将“公共”变量写入主机变量或组变量,这样所有服务

Ansible &引用;暂停“;每一位主人

在滚动更新之前,我想在监控工具中为每个主机设置停机时间。我为此创建了一个自定义模块。设置停机时间时可能会出现问题,我们无法解决这些问题。在这种情况下,我想让用户选择是中止部署还是在不设置停机时间的情况下继续部署 假设我这样调用我的模块: - downtime: duration: 5m comment: whatever ignore_errors: true register: downtime 所以我忽略了错误,以便继续。否则,将不再处理设置停机时间失败的主机 在下

ansible:从同一剧本中的其他剧本中访问寄存器变量

我试图从第二个剧本的剧本中的第一个剧本中访问名为“count”的变量。我在这里找到了一些关于同一问题的其他帖子,我认为我遵循了正确的步骤,但下面的代码仍然失败 代码 - hosts: group1 tasks: - name: count registrations on primary node shell: psql -U widgets widgets -c 'SELECT COUNT(*) FROM location' -t register: count -

始终在其他角色之前运行ansible角色

我正试图找到摆脱依赖的方法。我用的是Ansible 1.9.2 在单个剧本中,我希望能够安装Galaxy角色(在事件中为Datadog.Datadog角色)并对其进行配置。但Ansible总是呕吐;由于Datadog.Datadog角色在我编写的另一个角色安装Galaxy角色之前不存在,因此它不会执行。这就是我真正想要的,去掉我剧本中使用的其他角色: - hosts: all roles: - install_datadog - (some other roles...) -

如何在“中使用变量”;什么时候;ansible中的语句?

我试图在ansible中的when语句中使用一个变量, 我的代码片段如下所示: - name: git repo for non prod env git: repo=http://url/repo.git dest=/opt/dest version={{ bld_env }} when: ( "{{ bld_env }}" == "rc" ) or ( "{{ bld_env }}" == "sandbox" ) or ( "{{ bld_env }}" ==

如何告诉ansible';什么是非归档模块?

我正在写一本ansible剧本,自动安装一个软件。当我从网站下载tarball时,我有: software-package-release.tar.gz 解除戒备后,我只剩下目录了 software-package-v2.15/ ansible是否可以注册作为非归档模块一部分创建的目录 我尝试过以下剧本(我把nrpe-lkdsflkdjf文件放在那里,其中包含一个dirnrpe-2.15) 这是调试的输出: ok: [IP-here] => { "tar_reg": {

Ansible根据条件创建变量

我想根据分布创建一个变量,以下代码不起作用,我不知道原因: - name: Get Release vars: release: xenial when: (ansible_distribution_release == 'qiana') or (ansible_distribution_release == 'rebecca') or (ansible_distribution_release == 'rafaela') or (a

Ansible 可解辅助函数?

我可以在ansible中编写一个“助手函数”来设置模块结果中的变量吗 我正在拉一张JIRA票据并注册到一个变量中,我想将一些变量名转换为更易于管理的名称 例如,我不想把{{issue.fields.customfield{u 1158}}这个字段的值放在一个名为{ticket\u cpus}}的变量中,我最后结巴了一下。它完全实现了我想要的。我能够从前面的命令中获取结果,并将它们保存为易于读取的变量名 代码段: - name: Set Facts from JIRA set_fact:

在Ansible中区分Ansible错误和任务错误?

我试图在ansible剧本中运行命令任务,如果失败,我想运行营救部分。如果命令失败(exit status!=0),并且stderr输出不包含特定字符串,我希望失败状态是这样的 - block: - name: some command command: "command {{ my_var }}" register: command_status failed_when: command_status.rc != 0 and "Some text"

Ansible-等待用户输入远程计算机上交互式脚本的值

我希望ansible在命令行中等待我的输入,以便在远程计算机中运行交互式脚本。“Expect”不符合我的要求,因为交互式问题不断变化 乙二醇 xxx.pl 这必须是运行服务的用户。[root:root]':y-->应该允许我实时更改 处理公用事业?[usr/bin]:y--->与此相同这在Ansible中是不可能的 Ansible在将所有任务脚本/参数发送到远程主机执行之前将其打包,并且在任务执行期间无法(从Ansible 2.4开始)获得任何反馈–只能获得任务的最终结果。我想知道。。。如果调用

Ansible Jinja2变量超出范围

我有以下模板: {% set rotator = 1 %} {% for idx in range(1, count|int + 1) %} {% if rotator == 4 %} {% set rotator = 1 %} {% endif %} { "id": "{{ '%02d' % idx }}", "value": "{{rotator}}" }, {% set rotator = rotator + 1 %} {% endfor %} {% for idx in r

如何使用Ansible逐个在所有GCP实例上部署?

我正在寻找一种解决方案,用ansible在实例组的所有GCP实例上部署我的代码。我将列出一个实例组的所有实例,并逐一部署它们,以避免服务中断。 有什么想法吗 谢谢 托马斯我找到了解决办法。您必须添加“串行”密钥: serial:|“%” 它设置一次运行多少台主机。默认情况下,一次在所有播放机器上运行任务。我找到了解决方案。您必须添加“串行”密钥: serial:|“%” 它设置一次运行多少台主机。默认情况下,一次在游戏的所有机器上运行任务 serial: <number>|"&l

模式不适用于ansible playbook和--limit吗?

我想将ansible运行限制为不在windows组中的所有Web服务器。当我创建一个新组时,我完成了这项工作: [test] webservers:!windows 然后像这样运行它: ansible-playbook -i inventories/staging/ site.yml --limit test 但是,当我试图避免使用组定义并将所有内容都放在limit语句中时,它失败了!找不到windows事件 这是不支持的还是我做错了什么 是bash中的一个特殊字符,用于扩展以前的命令 您应

Ansible:我应该将服务启动设置为服务启用的处理程序吗?

假设我需要启用一个服务,然后启动该服务(例如,某个web服务器),我是否应该创建一个任务来启用该服务,然后创建另一个任务来启动该服务?或者我应该创建一个任务来启用服务,在这个服务中,创建一个通知,它触发一个处理程序来启动服务 如果使用notify handler的策略,那么问题在于服务是否成功启用但没有启动,然后在稍后再次运行playbook时。由于该服务已启用,因此将不再启动 我觉得把他们分开做可能更好?一般来说,人们如何在Ansible中实现它们 如果单独编写任务,下面是我的代码: ta

如何使用Ansible检查文件中是否存在特定的文本块?

我正在使用Ansible在安装某些应用程序时自动执行某些任务 在某些情况下,我想检查文件中是否存在某些行。文件中有几行内容始终相同,顺序相同。我要检查在前面的行之间是否插入了额外的行 我认为正确的命令是blockinfle,它与state:present混合使用,以确保行在那里。此外,我还使用check_mode不更改文件。那么任务是: - name: Check content of file delegate_to: localhost blockinfile: dest:

使用yaml向ansible tower添加单个主机

我有: 安西尔贝风塔安装(aws EC2) ubuntu服务器(AWSEC2) 我已经创建了一个主目录组,并试图添加ubuntu服务器作为主机 --- - name: ubuntu add_host: name: "192.168.1.1" groups: main 根据我为createhosts接口的variables部分编写的上述文档,我得到了消息invalidayaml 关于我哪里出了问题,有什么建议吗?我没有使用Ansible tower,但是我想看看它是否有用

Ansible 如何从库存动态设置defaults/main.yml中的值

我有一个项目的动态清单,在部署时,主机组会加载清单列表。同时,我想在role/defaults/main.yml中设置一个名为master_ip的变量,该变量的值来自host_vars[master] 我的主机分组如下: [master] xx.eco.project.com [slave] yy.eco.project.com zz.eco.project.com 因为我不能在YAML中使用if/else。就像我使用的模板一样 {% if inventory_hostname in gr

Ansible 可以在CIDR中获取网络掩码

为了获得IP地址/网络掩码对应的值“24”,我有以下代码: - set_fact: ip: "{{ ansible_default_ipv4.address }}/{{ansible_default_ipv4.netmask }}" - set_fact: mask_cidr: "{{ ip | ipaddr('prefix') }}" 其中,ansible\u default\u ipv4.address=172.16.1.67和ansible\u default\u ip

ansible,带循环的jinja模板,丢失换行符

尝试从模板构建JSON文件。它本身工作正常,但由于某种原因,循环构造中的换行符丢失了,这让我感到相当恼火;文件“工作”(机器可读性很好),但对于人类来说,它非常不适合 这是我的模板: { "Users": [ {% for username,user in _vpn_user_accounts.items() %} { "Name" : "{{ user.name }}", "H

如何在ansible剧本中使用变量?

如何在ansible剧本中使用变量 就像它们可以在bash脚本和docker中使用一样 谢谢您可以在ansible剧本中使用变量,如: - name: Create Directory file: path: "{{ directory_path }}" state: directory mode: 0755 become: yes 在ansible中,将变量放在双大括号中。 在上面的示例中,directory\u path是一个变量。 您可以阅读有关可解析变量

保存Ansible自定义模块的位置

在下面的目录结构中,我必须创建一个“anistable”目录的zip。其想法是将ansible目录中的所有内容(如playbook、roles、inventory details和自定义模块)放入一个zip包中,然后 它的内容不应该依赖于“ansible”目录之外的任何内容 <home> |<user> |__ansible |_____playbook.yml |_____inventory/

从Ansible中的映射列表中提取属性列表的正确方法

我正在寻找一种非丑陋的方法,从Ansible中的映射列表中提取特定值的列表。我可以找到一些方法,比如在这里:,但我所看到的一切都非常丑陋,而且我觉得应该有一种方法可以更清楚地告诉将来阅读它的人正在做什么。我可以写一个过滤器,但我觉得这应该是不必要的,因为这必须定期出现 我在Ansible中有这样的数据结构: interfaces: - name: eth0 subnet: 192.168.2 netmask: 255.255.255.0 static_dhcp_hos

无法运行Ansible';期望';模块

我正在尝试运行一个Ansible脚本,该脚本调用“expect”模块(请参阅消息末尾) 当我运行它时,我得到一个错误: pexpect python模块是必需的 然而,安装pexpect的pip任务运行时没有错误 我做错了什么 Thx 阿兰·德西莱茨 ==剧本内容=== --- - name: Run Anaconda shell hosts: all vars: conda_home: "~/anaconda2-NEW" conda_inst_sh_path:

从Ansible中的junos列表中获取特定项目

ansible版本:ansible 2.7.7 Juniper.junos2.1.0 我的问题是我有一个接口数组,我只想在其中找到物理接口(例如ge-0/0/0或ge-0/0/14或xe-0/0/3) 我试过了 msg:'{{inter.stdout_line | regex_search((ge)”)} msg:'{{inter.stdout_lines is search(“ge”)}' msg:'{{inter.stdout|line | search(“ge”)}}' Yaml文件: -

Ansible 是否仍适用于在RedHat7上使用pexpect,或者是否有其他方法执行命令并响应提示?

我正试图在Redhat7中为ansible使用pexpect,但无法安装它。我只得到了pexpect.noarch 2.3-11.el7@RHEL7版本。或者pexpect是否有执行命令并响应提示的替代方案?RHEL7附带的pexpectPython模块的版本对于Ansible来说太旧了(RHEL7有pexpect 2.3,Ansible需要3.3或更高版本)。您最好的选择可能是使用shell或命令模块运行expect;下面是一个例子: # You can use shell to run ot

Ansible 如何在URI模块中检索值以获得注册的循环输出?

我正在通过Ansible Tower API搜索作业模板&我想从存储在注册结果json条目中的返回的“name”和“id”字段创建一个键/值对字典(?) - name: Search for job templates uri: url: "{{ tower_url }}/api/v2/job_templates?search={{ item.name }}" method: GET user: admin password: "{{ tower_admin_

Ansible 与_项目一起使用时,如何访问项目外部的变量?

我的角色将与\u项一起使用: - name: Create backup config files template: src: "config.yml.j2" dest: "/tmp/{{ project }}_{{ env }}_{{ item.type }}.yml" with_items: - "{{ backups }}" 我可以访问项。按常规键入,但不能访问在集合外部定义的项目或环境: deploy/main.yml - hosts: ... v

如何在ansible剧本中使用修剪和if条件?

我正在为思科路由器写一本界面清理剧本。需要做一些预检查,比如 显示进程cpu-运行此命令,如果输出是cpu利用率超过80%,那么我需要跳过剧本 - hosts: Switch connection: local become: yes tasks: - name: run show version on remote devices ios_command: commands: - show version - show int

从ansible ini文件生成主机列表

无法使用插件读取此文件 戏 - hosts: localhost tasks: - debug: msg: "{{ item }}" with_ini: - '.* section=webservers file=hosts re=True' 给予 可以生成这样的主机列表吗 [webservers] www01.example.com www02.example.com www03.example.com www04.example.co

Ansible 运行存档模块的所有第一级文件夹

我正在使用存档模块压缩一些文件夹和存档。 我需要列出我的zip文件中的所有一级文件夹 是否有任何Jinja或python函数可以使用archive模块的注册输出来执行此操作 到目前为止,我的测试是: - name: zip folder archive: path: - /tmp/test/* dest: /tmp/zipfile.zip format: zip mode: "0755" force_archive: true reg

Ansible with_子元素(列表)

我试图使用Ansible来设置Apache虚拟主机和数据库,但并非所有vhost都有数据库(1个或更多) 我试了很多,也试着从中适应,但都没有真正起作用。我花了好几个小时做了很多尝试和错误,并得出了以下结论: 我的主机\u vars(节选): 这就是我的成就: - name: Ensure databases mysql_db: name: "{{ item.1.name }}" state: present login_unix_socket: /var/run/m

Ansible 在尝试添加新节点时,无法部署okd群集

这就是我目前的情况。我现在有一个独立的OKD集群正在运行 [jay@okd-master-oel:~ ]$ oc cluster status Web console URL: https://10.176.5.2.nip.io:8443/console/ Config is at host directory Volumes are at host directory Persistent volumes are at host directory /home/jay/openshift.l

Ansible 在远程节点上运行远程脚本

简单的问题 我在路径~/setup/inventory.py中的远程节点上有一个Python3脚本,我正在尝试远程执行它。 因此,我查看了脚本资源,它正在本地机器上搜索脚本 如何让Ansible运行我的remotePython3脚本。根据您的情况,正常执行它看起来像ospython3/setup/inventory.py ansible vscode bash使用命令或shell模块 差不多 - name: execute my script command: python3 /setup/

如何定义在ansible中提供密码的脚本

我已成功设置了一个vault\u password\u文件,其中包含一个从Bitwarden读取密码的脚本 我想对“成为密码”做同样的操作,但不知道在哪里以及如何实现 ansible.cfg是: [defaults] inventory=./inventory.yml vault_password_file=./ansible-vault-pass.sh [privilege_escalation] become=True Ansible vault pass如下所示,尽管细节无关紧要,但它

在ansible中将文件行转换为字典

有一个包含以下格式的行的文件: category1 name=item1 category1 attributes=attr1, attr2 category1 name=item2 category1 attributes=attr1, attr2, attr3 category2 name=item1 category2 attributes=attr1 正在查找ansible中的词典,如下所示: category1 name=item1 category1 attributes=attr

Ansible mysql8根密码和本机用户

我是ansible的新手,花了很长时间寻找,我觉得好像我错过了一些显而易见的东西 问题 在Ubuntu20.04服务器上使用ansible安装MySql8后,我不能做任何与MySql相关的事情,因为MySql“root”用户的密码设置为随机密码,并保存在错误日志中。我找到的唯一解决办法是检索密码并更改它。然而,这只会起作用一次。稍后再次运行同一剧本将导致错误,因为密码已被更改 在创建由MySQL本机密码标识的用户时,我也遇到了类似的问题。我已经找到了这样的解决方案:首先创建一个用户,然后使用sh

Ansible 以其他用户身份运行playbook

我已将ansible user的ssh密钥添加到其他主机,因此所有主机上都允许ansible user。现在我想以root用户或任何其他服务用户(如apache等)的身份运行playbook。我已在playbook中指示用户为ansible。我在以root用户身份登录时运行playbook时遇到了以下提到的错误但当我以ansible用户身份登录时运行playbook时,一切正常 - hosts: nameservers user: ansible tasks: - name: che

Ansible 在执行过程中接受用户输入

我是新来的。我在谷歌上搜索并阅读Ansible的文档。但我无法找到解决问题的办法 我的问题- 在我的Ansible playbook中,我正在运行一个命令,作为该命令的结果,系统要求我输入密码。我不知道怎样才能把密码输入到那个舞会上。 我可以将密码保存为var,但不确定如何在promt中输入它 P>对文档的任何链接都会受到高度赞赏。 你应该考虑使用预期模块。这里,我有一个例子 -名称:正在执行的RCU 期望: 命令:> “{{oracle_common}}/bin/rcu-silent-cre

Ansible如何复制到具有动态后缀的目标文件夹

我需要将本地源文件夹的内容复制到远程文件夹,其中源内容如下: files/ ├── certs    ├── server.crt    └── server.key 目标路径将随其后缀而变化。例如,如果目标路径是claim-pvc-3b6165b0-f1d6-11ea-a39b-0050569b0faf/。此处的索赔pvc-始终保持不变,但其后缀3b6165b0-f1d6-11ea-a39b-0050569b0faf将发生变化 我尝试过使用以下方法,但不起作用: - name: cop

Ansible 从python模块访问playbook变量

使用python为ansible创建自定义模块时,我需要访问剧本中的一些变量。我发现我可以创建一个参数来传递变量,但是有没有一种方法可以访问变量而不必每次添加一个参数 例如,在剧本中,我会: - set_fact: myVariable: "some value" 在脚本中,我尝试了: import os myPythonVariable = os.environ['myVariable'] 但我得到一个错误,即键“myVariable”不存在。我想这是因为我

ansible将远程nfs共享装载到运行ansible playbook的本地主机服务器

运行ansible.posix.mount时,将创建到src的ssh连接,然后在所述服务器上创建路径目录。 我希望能够在运行ansible playbook的机箱上本地从远程服务器装载nfs共享 我知道下面我的剧本中的第二个任务是在“nfs服务器”下清单中的任何主机上执行上述任务,但是我需要包括该主机,因为它是我需要将装载共享指向的目标ip变量。我不想将IP地址目的地添加到我的settings.yml中,如果可能的话,我宁愿通过清单文件进行迭代 我错过了什么 这是我的剧本: -名称:创建目录 主

获取ansible中已安装软件包列表和所需软件包列表之间的差异列表

(请参阅下面的更新2了解我的最后一句话)。 我想让ansible通过比较已安装的软件包和所需软件包的列表来生成缺失软件包的列表。(丢失的包列表将被传递给yum进行安装。)似乎可以使用包事实和“差异”过滤器的某种组合来实现这一点,但我无法想出正确的语法 例如,以下提供了有关已安装软件包的信息: - name: get the rpm package facts package_facts: - name: show them debug: var=ansible_facts.pa

使用Ansible将MacAfee tenable Nessus rpm包安装到Amazon Linux时失败

我正在尝试使用Ansible将Nessus rpm包安装到Amazon Linux ami,并尝试使用以下方法从私有gitlab存储库中提取rpm包curl--header“private-TOKEN:”https://gitlab.example.com/api/v4/projects/13083/repository/files/app%2Fmodels%2Fkey%2Erb/raw?ref=master“ 我可以拉包,但安装失败,出现以下错误 amazon-ebs.autogenerate

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