似乎无法从facts.d文件夹中发现事实。这是我的设置。所有提到的文件都在我安装了ansible的OSX机器上。在远程机器上运行playbook
文件:/work/myproject/ansible.cfg
[default]
fact_path=/work/myproject/facts.d
文件:/work/myproject/facts.d/info.fact(静态文件)
命令输出:ansible--version
文件:/work/myproject/test.yml(剧本)
命令输出
我正在编写一个创建用户的简单任务。作为此任务的一部分,我想从defaults/main.yml读取密码
默认值/main.yml
测试用户:测试用户
测试组:测试组
测试用户密码:somepassword
我的任务文件如下所示
-名称:“为testuser创建组”
组:
名称:“{test_group}}”
状态:当前
-名称:“创建testuser”
用户:
名称:“{test_user}}”
密码:{{[test_user_password
我遇到了一个问题,不知道如何正确地解决这个问题。我编写了一个模块,创建系统上安装的版本的事实。我的目标是得到一个包含在词典中的变更编号列表
任务[调试]*******************************************************************
ok: [swsrv1-ccc01.localhost] => {
"changed": false,
"hostvars[inventory_hostname].v
标签: Ansible
iptablesansible-inventory
我正在尝试将iptable规则应用于一组主机,其中我希望为特定组中的主机打开所有端口。
但我无法在生产环境中为所有主机一起运行此配方。所以我使用--limit标志来运行剧本。
但由于给出以下错误,它失败了:
fatal: [test-vm1]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'ansible.vars.hostvars.HostVarsVars object' has no attribute
我需要根据第一个对象键合并两个JSON对象
object1 = {
"params" : {
"type": ["type1", "type2"],
"requeststate": []
}
}
object2 = {
"params" : {
"type": ["type2", "type3", "type4"],
"requeststate": ["Original", "Revised" ],
"responsestate":
有人能推荐一种方法来获取两个寄存器变量的内容并将它们传递到一个命令中吗?同时还以1:1的方式排列每个变量的输出结果。(如下图所示输出中的VS1:rule1、VS2:rule2等)
以下是存储在标准输出行中用于“虚拟检查”和“规则检查”的内容:
"Virtual_Check.stdout_lines": [
[
"ltm virtual VS1 ",
"ltm virtual VS2 ",
"lt
我正在尝试使用Vagrant(v2.1.2)和VirtualBox(v5.2.20)提供本地kubernetes集群
我的Vagrantfile使用ansible_local provisioner运行一些ansible剧本,以使用kubeadm提供K8s集群
几个月前,当我运行它的时候,一切都运行得很好,但现在已经不工作了。不知道它为什么停止工作,但是当我试图将kube配置复制到vagrant users home dir时,主节点的ansible playbook失败了
失败的ansible
我现在正在为Ansible写一大堆支票
它包括联系远程机器并执行检查
根据这次检查的结果,我决定它是否失败
这是最重要的一点:任务本身永远不会失败。它只返回一条消息。我注册结果,然后分析它。基于这一点,我决定这是否是一次失败
问题是,我想添加一个标志,允许测试继续运行而不是失败
代码如下所示:
- name: Check fail.
fail:
msg: "Test failed"
when: "failfast_flag and <the actual check>
标签: Ansible
ansible-2.xansible-facts
我被困在一个任务中,我试图与_一起使用,并在多个列表中循环。以下是场景:-
我有两组数据:
"node_list": [
"10.2.0.1",
"10.2.0.2",
]
"java_process_list": [
[
"8612",
"8622",
"8623",
"8625"
],
[
"8613",
"8627",
"8628",
"8630"
]
]
现在,我希望我的节点列表的第一个项(10.2.0.1)迭代
角色中的文件main.yaml在下面,我想打印一些消息,如“目录已创建/存在”。当我使用下面这样的东西时,我得到了错误-
错误:任务“文件”和“确保存在下载工件的目录”中指定了多个操作
---
-名称:确保存在下载工件的目录
调试:
msg:“已创建/存在目录”
文件:
路径:“{local\u server\u release\u location}”
状态:目录不可能在一个任务中同时使用调试和文件模块
相反,如果目录应该存在于本地主机上,则创建该目录并测试其存在性。比如说
- name:
我使用三元运算符返回定义的变量,否则返回另一个变量:
{{ (variable1 is defined) | ternary(variable1, variable2) }}
这有点笨拙。有更好的方法吗?试试这个
- hosts: nodes
gather_facts: false
vars:
var1: value1
tasks:
- name: Show 1
debug: msg="{{ var1 | default('AAAAAA') }}"
在Ubuntu20.04机器上安装ansible后,我遇到了下面提到的导入错误
Traceback (most recent call last):
File "/home/sourav/ansible/bin/ansible", line 62, in <module>
import ansible.constants as C
File "/home/sourav/ansible/lib/ansible/constants.py", line
我有一个剧本,其中包括三个特别的任务
- name: Execute the compilation script
command: sh {{ working_folder }}/compile.sh
args:
chdir: "{{ working_folder }}"
when: run_deploy_machine == "true"
- name: Execute the deploymen
我已经开始学习Ansible,我发现在大多数情况下(甚至在官方文档中),剧本的结构如下:
- hosts: all
tasks:
- name: task1
- name: task2
...
- name: activity 1
hosts: all
tasks:
- commands1 (ping all hosts, gather which ones are reachable)
register: ping
- group_by: key=ping
var文件定义如下:
packages:
- python-pycurl
- name: tmux
files:
tmux.conf: /etc/tmux/conf
tmux2.conf: /etc/tmux/conf2
因此,如果需要扩展自定义,包就是包名称或字典的列表。无论包名是在列表中定义的还是使用字典定义的,我都希望使用单个任务安装所有包。我希望能够实现以下目标:
- name: Install Base Packages
apt
我有一本剧本,我想和sudo一起运行。这是我的ansible剧本:
ansible-playbook -i hosts site.yml -K
site.yml
当我运行它时,我得到以下信息:
ansible-playbook -i hosts site.yml
PLAY [Server] *****************************************************************
GATHERING FACTS ******************
我试图读取一个文件的内容,将它们存储在一个变量中,然后将它们插入到另一个文件中(如果它们不存在)
因此,我将尝试进行如下操作:
# Create a variable that represents the path to the file that you want to read from
ssh_public_key_file: '../../jenkins_master/files/{{ hostvars[inventory_hostname]["environment"] }}/id_
不确定这是否是ansible galaxy中的错误,但我正在尝试从requirements.yml文件(.)中安装角色。其中一个角色正在从git中提取,具有特定的版本,如下所示:
要求。yml:
---
- src: https://github.com/thom-nic/ansible-shell
name: thom-nic.shell
version: develop
当我运行ansible galaxy install时,我得到以下输出:
± ansible-galaxy i
我试图学习如何使用易变事实作为变量,但我不明白。当我跑的时候
$ ansible localhost -m setup
$ ansible localhost -m setup -a "filter=ansible_date_time"
localhost | success >> {
"ansible_facts": {
"ansible_date_time": {
"date": "2015-07-09",
我在项目的存储库中存储了配置文件的模板。我想做的是在从存储库克隆项目之后,使用Ansible的模板模块在远程服务器上使用该模板创建一个配置文件
查看模块的文档,似乎src属性仅支持本地文件
我希望避免将配置模板存储在Ansible playbook中,因为将这些特定于项目的模板保存在项目存储库中对我来说更有意义
我是否可以使用模板模块的替代方案 如果模板要在远程主机上,这里有两个选项
首先,在远程主机上克隆repo后,您可以使用与模块工作方式几乎相反的模块将模板带回
这方面的剧本可能类似于:
-
在我的剧本中,我想创建一个保存外部命令输出的变量。之后,我想在几个模板中使用该变量
以下是剧本的相关部分:
tasks:
- name: Create variable from command
command: "echo Hello"
register: command_output
- debug: msg="{{command_output.stdout}}"
- name: Copy test service
templ
问题:当我尝试安装包时,ansible无法继续。CLI只是闲置在那里
SSH被配置为在不提示输入密码的情况下连接。我创建了一个名为“test”的用户,我的sudoers文件具有以下配置:
test ALL=(ALL) NOPASSWD:ALL
也在/etc/ansible/ansible.cfg中
inventory = /etc/ansible/hosts
#library = /usr/share/my_modules/
remote_tmp
寻找一个Ansible任务,如果变量与给定的正则表达式不匹配,该任务将失败。比如:
# fail when hostname doesn't match a regex
- fail:
msg: "The inventory hostname must match regex"
when: {{ inventory_hostname }} not matches [a-z](([-0-9a-z]+)?[0-9a-z])?(\.[a-z0-9](([-0-9a-z]+)?[0-9a-z
上面的代码给出了最后一个块的错误。
错误when'不是一个有效的播放属性
错误似乎出现在“/root/two_file_stat.yml”中:第27行第3列,但可能是
根据确切的语法问题,在文件中的其他位置
令人不快的一行似乎是:
名称:仅当文件未更改时阻止运行
^这里
您应该与主机和任务运行。在上一部分中,您没有指定任何主机和任务部分
- hosts: remote_1
tasks:
- name: first file check
stat:
pat
当使用机密时,如中所述
然而,多行秘密似乎不像往常那样有效
如果通过添加机密,则多行机密在解析为playbook bundle参数时将其换行符更改为空格
如果如中所示手动添加机密:
---
apiVersion: v1
kind: Secret
metadata:
name: test
namespace: openshift-automation-service-broker
stringData:
"test1": "test1"
"test2": "test
我正在运行一个ansible playbook,它以JSON格式输出我的信息。此数组有一个循环,该循环具有多个具有不同值的相同键。请参见下文,我对“intf_id”感兴趣:
目前,我可以通过以下方式访问“intf_id”的第一次迭代:
我觉得我很接近了,但我不知道如何获得“intf_id”的每次迭代。我可以通过将ROW_cdp_neighbor_brief_info[0]更改为[1]或[2]等来获取后续的密钥。我需要能够访问每个密钥,而不知道将有多少个密钥。键的每个值也需要由后续任务单独调用
1
我正在创建一个清单文件,我也想成为root用户,但要做到这一点,我需要在节点上使用这个确切的命令:
sudo rootsh -i -u root
有办法吗
稍后,我想将该清单用于此命令或类似命令:
ansible -i inventory_file -m setup -a 'filter=ansible_virtualization_role' -o -b all
谢谢。要在清单文件中提到的节点上运行任何“sudo”命令,您必须通过添加以下内容来升级“ansible.cfg”文件中的权限:
我需要帮助Ansible并使变量基于另一个用户定义变量的条件。
我写了这样的东西,但我很确定这是错误的脚本
所以“{vcpu_size}}”必须基于用户定义的“{vm_size}}”来定义,我不知道怎么做
谢谢你的帮助
---
- name: Deploy VM on XenServer
hosts: XEN_Server
become: true
tasks:
- name: Load VPS specs for chos
我有一个XML文件来配置某些进程,XML节点有两种模式:
<Node> Content </Node>
<OtherNode property="value"> Content </OtherNode>
内容
内容
我需要通过保留XML标记的结构来替换内容,只更改特定的节点,这带来了一个重要的限制,因为内容可以是其他标记中相同的值,并且由于明显的原因不应更改这些值
我有一个正则表达式,它只允许根据节点的名称选择一个特定的节点,而不考虑它是否有
我正试图使用Ansible junos模块中的JUniter_junos_facts来查询我使用Vagrant配置的一些VM。然而,我得到以下错误
fatal: [r1]: FAILED! => {"changed": false, "msg": "Unable to make a PyEZ connection: ConnectUnknownHostError(r1)"}
fatal: [r2]: FAILED! => {"changed": false, "msg": "Unab
标签: Ansible
ansible-2.xansible-inventoryansible-factsansible-template
我正在学习ansible,并编写了一个LDAP验证任务。但是,当我运行playbook时,即使验证是正确的,任务也会失败
下面是ansible任务,它将检查LDAP密码的最长期限
- name: LDAP Validation
shell: /usr/bin/ldapsearch -w admin -H ldap://localhost:10389 -x -D "cn=manager,dc=apache,dc=com" -b "cn=default,ou=pwpolicies,dc
因此,我正在编写一本ansible playbook,其中卸载了一些操作系统软件包(在本例中,是所有RedHat ABRT软件包),然后检查它们是否已卸载。卸载不是问题(它工作正常),但我需要验证包是否真的被卸载了,然后根据这一点做一些其他事情
这是在RedHat 6.9机器上,我使用的是Ansible 2.6
- name: list installed ABRT packages
yum:
list: abrt*
register: abrt_packages
我有一个目录结构,在这个目录结构下我保存着我的剧本,如下所示:
/home/monk/
|_____Ansible_work
|_____[ansible.cfg]
|_____[playbook_dir_1]
| |_______playbook_1.yml
|_____[playbook_dir_2]
我目前正在尝试适应Ansible,但我未能实现一个常见的用例:
假设我在角色/nginx中有一个角色nginx,其中一项任务是设置自定义默认页面:
- name: install nginx default page
copy:
src: "index.html"
dest: /var/www/html/
owner: root
mode: 0644
Ansible将在以下位置查找文件:
roles/nginx/files
roles/nginx
roles
我对Ansible不熟悉。我正在尝试编写一个剧本来配置UFW。我的任务如下:
- name: Allow SSH in UFW
ufw:
rule: allow
port: 22
proto: tcp
from_ip:
- "{{ item }}"
with_items:
- 192.168.0.0/24
- 10.200.3.0/24
- 10.200.2.0/24
运行剧本
在Ansible 2.8中,我需要在Ubuntu服务器VM上部署和配置Bind 9 DNS。我有一个:
DNS Ansible角色进行安装和配置
每个域区域的变量列表(如DNS记录类型、域名、DNS条目等)。在此之前,它是有效的,当我试图让它接受下一个要求时,问题就会出现:
在同一个调用中,可能需要配置几个域区域。因此,我向它发送一个包含多组变量的列表(在2中提到)
现在,在shell中,我使用1元素列表调用它,使用:
--extra-vars "{"dns_entry_conf":
我正在尝试开发一个Ansible Playbook,它执行一系列维护步骤,例如更新操作系统和清理临时文件。其中一些命令(如reboot或systemd)需要root权限。Ansible文档表明,“成为”属性是提升访问权限的适当方式:
- name: reboot the host
become: true
reboot:
reboot_timeout: 120
不幸的是,执行playbook的用户没有完全的sudo访问权限。相反,某些命令在sudoers文件中以白色列出
我遇到
下面是简单的剧本
- name: Create VM and associated resources
hosts: linux
connection: local
vars_files:
- vars_files/{{ env_name }}_vars.yml
- vars_files/base_vars.yml
roles:
- linux
我的清单文件是TEST.yml
all:
vars:
env_name: TEST
linux:
我正在使用win\u choclatey进行windows应用程序部署,但作业一直在运行,我想它需要一个密码来安装应用程序,所以我可以在我的Playbook中声明在哪里?使用Playbook中的模块。文档中有关于如何做的例子
是否可以通过lineinfle或其他模块更新文件配置,但保留以前的值
例如:
SOME_ARGS=" -AA:1AA -BB:2BB -CC:3CC"
在行尾或行首添加-DD:4DD,结果为:
SOME_ARGS=" -AA:1AA -BB:2BB -CC:3CC -DD:4DD"
或
这将不起作用,因为它将用行值替换文本:
- lineinfile:
path: "/some/file.txt"
regexp: "^SOME_ARGS=.*-DD:4DD"
line
我试图通过调用处理程序来重新启动tomcat,我需要根据变量的条件调用该处理程序。不知怎么的,它没有被调用
- block:
- debug:
msg: "Configuration changes detected but no deployment, So proceeding with tomcat restart !!!!"
notify:
- Restart tomcat
- meta: end_play
when:
我正在尝试在配置以外的主机上使用-l选项播放yml。。但是跳过:没有匹配的主机。
这种情况下,需要将与主机关联的剧本例外地用于其他主机。(出于安全原因,playbook不能有hosts:all和由管理员来限制目标)
正确的方法是什么(如果有)
最后,@mdaniel的答案让我想到了一个bash包装器,它创建了一个临时yml,其中host:字段被替换为参数。。虽然不漂亮,但很管用。(这同样适用于从一系列任务动态生成剧本)
正确可行的方法我在这里找到了:
正确的方法是什么
使用all作为剧本的目标
Ansible处理程序被赋予启动特定服务的任务。如果调用服务时该服务已经启动,Ansible handler将做什么?这取决于您用于重新启动服务的模块和定义。通常情况下(例如使用服务模块),当服务已经启动并且您指定状态:started,则什么也不发生
在处理程序中,您通常希望使用状态:restarted,这将确保在处理程序运行时重新启动服务
我已经设置了playbook,它运行良好,没有错误。
现在我有了变量检查的设置条件,当某个变量为空或未定义时,它会失败/停止playbook
示例代码
- name: Checking variables
fail:
msg: " Input cant be empty, Please provide all information ."
when:
- var1 == ""
- var2 == "
我是新来的ansible和我的设置工作。我在/etc/anistable/hosts中看到主机列表是默认的,并使用root权限进行更改。在教程中,我看到了在用户空间中使用宿主文件的解决方案
我希望在我的主目录下设置所有的ansible。将hosts文件放在/etc中有什么好处?默认位置在那里的原因是什么
谢谢你的澄清 从安全角度来看,出于以下几个原因,将其放入/etc目录是最安全的初始选项
如果Ansible默认使用playbook执行时所在的“当前目录”中的目录文件,那么坏角色很容易将目录文件
我正在尝试在VMware环境中自动部署Windows guest,只要我对必须手动将其添加到域感到满意,我就完全能够做到这一点,而我不是。我尝试过使用vmware_客户机定制,但它似乎没有被应用
表2.9
红帽8
YML
结果
{
"changed": true,
"instance": {
"module_hw": true,
"hw_name": "VAL
我正在使用ansible vault存储我的密码,它工作得非常好。
我遇到的问题是,当任何任务失败时,它会在日志中显示这些密码。
如何在所有情况下隐藏这些密码
这是我的示例任务
- name: Run python script for generating Projects report
command: python GetProjects.py -o { org1 } -p { pat1 }
register: result
- debug: msg="{{result.
我在role1/vars/main.yml中有一个定义ansible变量的文件,用于剧本:
app_name: "amazing"
稍后,我想在另一个文件role1/vars/overwrite main.yml中添加一个后缀:
app_name: "{{ app_name }} app"
这是一个更复杂项目的一部分,其中定义了app\u name,然后在模板中使用,我无法访问该模板。因此,我们的想法是简单地将后缀添加到变量中。但是我可以添加一个新任务
我在一个文件中引用了一个变量,就像在“vars_files”文件中一样。它只需运行一次,然后在后续引用中失败
---
- hosts: asa
gather_facts: no
connection: local
vars_files:
- /var/lib/awx/projects/vpn/clientData
tasks:
- name: Build object group
asa_config:
lines:
我们已经在Linux中安装了ansible,我们需要在私有子网(windows server)中安装一个应用程序(.net core),并且我们有bastion server windows
Ansible(Linux)堡垒(windows)专用子网(windows),
AWS中的堡垒服务器和专用子网,本地计算机中的ansible
从我的本地ansible机器,如果我们运行playbook,它应该部署在私有子网中
你能帮我。。。
提前谢谢嗨。到目前为止你试过什么?
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 192 页