我的环境:Ansible 1.7.1/Ubuntu
我有一个私有OpenStack网络,如果我使用中子命令,它可以正常工作:
$ env | grep OS_
OS_PASSWORD=cai
OS_AUTH_URL=http://demo-controller:35357/v2.0
OS_USERNAME=larry
OS_TENANT_NAME=demo
$ neutron net-list
+--------------------------------------+---------+-
这里有一个可供选择的绞索
我遇到的问题是,当我使用“command”模块执行命令时,它会失败。在远程主机和本地主机上也尝试了此操作
基本信息:
版本:ansible 2.0.0(devel 2c9d1257ba)
核心:(分离头5983d64d77)最后更新2015/05/30 07:22:33(GMT+800)
附加:(分离头1276420a3a)最后更新2015/05/30 07:22:41(GMT+800)
Ansible主机文件
local ansible_ssh_host=127.
我正在尝试将sensu检查自动部署到主机扮演的每个角色
我现在的结构是
group_vars/
nginx
all
在每个group_vars文件中,我定义了以下内容:
sensu_checks:
- check_name
- check_other_name
例如,在组_vars/我所有的:
sensu_checks:
- check_raid
- check_load
- check_disk
sensu_checks:
- check_pid
- ch
领事查找插件有以下代码。我想通过为ANSIBLE\u CONSUL\u URL设置环境变量来覆盖。我似乎无法让我的任务使用环境变量。如果在运行任务之前手动设置环境变量,则任务运行正常
self.agent_url = 'http://localhost:8500'
if os.getenv('ANSIBLE_CONSUL_URL') is not None:
self.agent_url = os.environ['ANSIBLE_CONSUL_URL']
我的任务:
错误
TASK:
我对ansible很陌生。我能够创建ansible脚本来安装rpm和deb软件包。但是,我没有找到任何运行和安装.bin文件的示例
其想法是触发安装位于本地下载文件夹中的.bin文件
可能吗?
我试过这样做
- file: path=$HOME/Downloads/Xplorer-6.0.1-linux-installer.bin state=touch mode="u=rwx,g=rx,o=rx"
- expect:
command: $HOME/Downloads/Xplorer-
当我满足某个条件时,我希望在没有错误的情况下退出(我知道和模块)。以下代码退出,但出现故障:
tasks:
- name: Check if there is something to upgrade
shell: if apt-get --dry-run upgrade | grep -q "0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded"; then echo "no"; else echo
我的ansible yml文件中有3个任务,如下所示
---
- name: Instance provisioning
local_action:
module: ec2
region: "{{ vpc_region }}"
key_name: "{{ ec2_keypair }}"
instance_type: "{{ instance_type }}"
image: "{{ ec2_image}}"
zo
我对Ansible不熟悉。下面是我试图播放的剧本的一小段,但遇到错误“error!fail”不是剧本的有效属性”
我尝试了stackoverflow上的多个选项,但没有成功。必须在任务级别使用fail指令
这意味着为了达到你想要的效果,你必须做如下的事情
---
vars_prompt:
- name: "var1"
prompt: "Please pass variable"
private: no
tasks:
- fail
我有一个重启Apache服务器的基本操作手册,但我想知道下面的命令是如何解释和转换为它的等效命令--服务httpd start
- name: ensure apache is running
service:
name: httpd
state: started
服务模块首先获取服务的状态(httpd)。如果服务已启动或正在运行或已重新加载,并且所需的服务状态为已启动,则不会重新启动服务
self.svc_change = False
...
...
if n
我为这个尴尬的标题道歉,但我想不出一个更好的方式来表达一个看似非常常见的操作:
我有一张这样的清单
repos:
- nrser/x
- nrser/y
想把它变成一个像dict一样的
repos_dict:
nrser/x: nrser_x
nrser/y: nrser_y
这在python中非常简单
repos = ['nrser/x', 'nrser/y']
repos_dict = dict((repo, repo.replace('/', '_')) for repo in
我试图在服务器组上重新启动jboss,除了cgfmgr,它失败了。能帮我解释一下语法吗
任务:
- name: restarted jboss
service: name=jboss state=restarted enabled=yes
when: inventory_hostname in groups["{{ server_group }}:!cfgmgr-{{ server_group }}"]
错误-
任务:[重新启动jboss]
****************
我想知道是否有可能在ansible 2.2.0中为两个不同的主机并行部署6个不同的任务(3 | 3),因为我遇到了问题,将它们与一个playbook并行运行,它们只是顺序运行。您可以使用异步任务来实现这一点。大概是这样的:
- hosts: host1,host2
tasks:
- command: /task1a.sh
async: 1000
poll: 0
register: task1a
when: inventory_hostn
我想将ansible中的循环与应用于它的when语句结合起来。然而,当语句应用于每个循环迭代时,这就消除了将一个语句应用于整个循环的可能性。有人知道怎么做吗
我以前遇到过这个问题,但在这个特定的例子中,它涉及一个可能存在或不存在的变量。我想做的是:
- name: Loop
debug:
msg: "{{ item }}"
with_items: x.y|default([])
but-only-run-this-loop-when: x is defined
默认过滤器负
标签: Ansible
ansible-2.xansible-inventory
每当我添加新机器并第一次运行playbook时,它就会挂起。当我从Ansible服务器ssh到该机器并退出并再次运行playbook时,它就可以工作了 Ansible很可能无法验证主机密钥,当您连接到ssh时,系统会提示您手动确认主机密钥
将host\u key\u checking=false添加到您的帐户。Ansible很可能无法验证主机密钥,当您连接ssh时,系统会提示您手动确认
添加host\u key\u checking=false。请每个问题问一个问题。我删掉了与标题不匹配的一个。
我想看看是否有人知道我在Ansible面临的这个问题是否有解决方案
我有一个清单文件,如下所示:-
[clusterA]
10.0.0.1
10.0.0.2
10.0.0.3
....
[clusterB]
10.1.0.1
10.1.0.2
10.1.0.3
....
[web-lb]
10.0.0.1
10.1.0.1
[web-lb:children]
clusterA[0]
clusterB[0]
我不想重复web lb组中的IP地址,而是想执行以下操作:-
[clusterA]
在我的大多数剧本中,是否有ansible默认加载的文件?这样我就可以将默认变量放入其中。不,剧本中没有默认变量文件
/roles//defaults/main.yml中的角色有默认值
为您的剧本提供一些常用变量的通常方法是对特殊组all使用组变量
将它们放入:/group\u vars/all/common.yml
我试图在下面的json片段中解析出特定的子网名称,同时在json\u查询中使用contains\u with或start\u with过滤器。
它包含两个VNET,每个VNET都有多个子网:
{
"azure_virtualnetworks": [
{
"name": "test-vnet-172-17-0-0-19",
"properties": {
"subnets": [
{
"nam
这是一个我们必须调试的简单vars文件
/roles/test/vars/{{ansible_distribution | lower}}/apt packages.yml
packages:
required:
- htop
# - aptitude
package:
htop:
allow_unauthenticated: no
autoclean: no
autoremove: no
cache
我已经知道,如果你有很长的条件和它们之间,你可以使用列表将它们分割成多行
尽管如此,我还不知道有什么办法可以解决你和他们之间的问题
现实生活中的实例:
when: ansible_user_dir is not defined or ansible_python is not defined or ansible_processor_vcpus is not defined
这一行很难看,很难读,显然不适合79栏
我们如何重写它以使其更易于阅读?使用YAML折叠运算符
when: >
我试图检查inventory\u hostname是否在导入变量的列表中
vars/users.yml file:
---
users:
- username: user1
comment: "User 1"
group: admin
password: "sha password"
keys:
active:
- "ssh-rsa etc"
admin: yes
- username: user2
comm
我想在每次调用检查结果中的特定参数后,进行一系列API调用,如果该参数大于特定值,则将其保存在寄存器中,并继续执行playbook
基本上,我正在对RHEV进行API调用以检查存储域。然后我想检查存储域是否有足够的空间,如果有,将该存储域id存储在寄存器中,以便在存储域上创建磁盘
下面是我如何对storagedomain进行单个API调用的代码段
- name: Get Free Storage Domain On RHEV
uri:
url: "{{ rhevurl }}/sto
我想知道在某些情况下,ansible显示“changed=0”,甚至连playbook任务都成功执行了,ok=2。
当使用REST API和URI模块时,这种情况就发生了。
我试图找到一个解释,但没有成功。
谁能告诉我原因是什么?如果我一起在多台服务器上进行更改,而不是手动检查更改是否完成,这将是一个大问题。
谢谢 Ansible中“更改”和“确定”之间的关键区别在于所有模块之间就什么是“确定”和什么是“更改”达成了内部一致
当一个模块认为它的动作改变了某些东西时(例如,在模块执行前主体的状态和
例如,我想为一组5台主机创建10个数量递增的目录。
任务结束后,结果应为:
Server1 Server2 Server3 Server4 server5
dir01 dir02 dir03 dir04 dir05
dir06 dir07 dir08 dir09 dir10
如果我必须创建更多的目录,服务器之间的轮换将继续
在一组5台主机中运行以下任务时:
- name: Creates Project's d
我正在尝试编写一个任务,根据条件将字典值存储在变量中
我不熟悉这项技术。请任何人帮助下面的请求
我尝试了以下代码。请在下面查看
- set_fact:
v1: "{{ v1|default([]) + item.keys() if item.values() == false else 1 }}"
loop: "{{ dv }}"
“dv”是一本字典
[{1A:True},{2A:True},{3A:False},{4A:False}]
实际上,这里我只使用比较运算符在v
我正在尝试将一些代码从with_项迁移到循环
我有这个剧本。看起来它们是相同的,但只是将with_项更改为循环
- debug:
msg: "{{ item }}"
loop:
- "{{ lookup('pipe','echo -e \"pro.json\npre.json\ndev.json\"').split('\n') }}"
- debug:
msg: "{{ item }}"
with_items:
- "{{ lookup('pip
我有以下代码:
- name: check if file/folder exists
stat:
path: "{{ item }}"
register: check_file
with_items:
- ['{{ source_folder }}','/etc/file', '/usr/file', '/root/dir', '/etc/test']
- debug:
msg: "{{ check_file }}"
#msg: "{{ check_f
我在Ansible和向服务器添加新用户方面遇到问题。
首先,我检查用户是否出现在系统上,如果没有,然后我继续创建他们
我在这里发现了一个类似的问题:
通过添加一个简单的salt,我能够修复在文件userlist中添加新用户时更改的状态。
然而,最后一部分,即处理程序,总是被执行的
我的剧本是这样的:
---
- hosts: all
become: yes
vars_files:
- /home/ansible/userlist
tasks:
- name: chec
我正在尝试设置一个包含win\u shell模块的剧本,但由于某些原因,它不起作用
---
- name: Installer
hosts: localhost
tasks:
- name: Display tmp folder
win_shell: echo %tmp%
args:
executable: cmd
register: homedir_out
- debug: var=homedir_out.stderr
我得到的错误是:
在这个问题上叠加以使我的代码清晰
例如:
- name: task
copy:
src: "{{ 1 }}"
dest: "{{ 2 }}"
正如我在文档文件模块copy中看到的,copy有一个参数:
远程\u src:是/否
所以我的问题是:
是否可以根据单个任务块中的任何条件使用此参数
比如:
- name: task
copy:
src: "{{ 1 }}"
dest: "{{ 2 }}"
if my_condition == 1
rem
我试图写一个剧本,我想检查是否安装了一个deb包,如果没有安装,然后安装
到目前为止,我尝试使用package_facts模块,但我无法理解这一点
- name: Gather package facts
package_facts:
manager: auto
- name: Debug if package is present
debug:
msg: 'yes, mypackage is present'
when:
标签: Ansible
ansible-templateidempotent
是否只是将模板复制到远程主机idepomdent的过程?
例如:
- name: Template a file to /etc/files.conf
template:
src: /mytemplates/foo.j2
dest: /etc/file.conf
owner: bin
group: wheel
mode: '0644'
模板示例
Hello world {{ test_variable }}
这取决于模板。取决于模板意味着,如果模板
列出任务名。除了名称之外,还有什么方法可以获取任务的更多详细信息吗?如果您希望在不执行任务的情况下查看每个任务的最终结果
Ansible提供了一种检查模式,也称为干运行模式,用于预测每个任务中可能发生的更改,而不实际执行该任务
ansible-playbook —list-tasks —tag<tagname>
ansible-playbook --check your_playbook.yaml
标签: Ansible
ansible-2.xansible-inventory
在Ansible中,我想使用when条件来在远程机器上执行一些shell命令,这取决于条件匹配与否。我发送带有-e(--extra-var)参数的变量,如下所示。但是,没有任务与我的VAR匹配,虽然应该匹配,但总是跳过。我错过什么了吗?有人帮我吗
易读版本
ansible 2.9.2
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/module
我想将变量showoutput(其中有4个命令)的内容复制到一个文件中。但是,当我执行playbook时,它只复制第一个命令
如何复制这四个命令
在我的剧本下面:
- hosts: ios
vars:
command_list:
- show cdp neigh
- show ip interface brief
- show clock
- show arp
tasks:
- name: Run the SHOW com
我有下面的剧本来显示ec2主机列表的du。但是,这样,输出将显示du和相应的公共ip地址。我如何修改它以显示输出以及相应ec2实例的私有IP地址
---
- hosts: ec2_hosts
tasks:
- name: "display disk utilization"
command: df -h /home
register: show
- debug: var=show.stdout_lin
我试图在运行ansible playbook时从清单文件(yml)访问变量。清单文件(仅相关部分)的代码段格式如下
cfgs:
- name: RCH
members:
- holiday
- map
- list
- network
我希望将“RCH”作为变量导入到我的剧本中。有人能帮我吗?并且不希望修改库存文件,
在使用Ansible设置新的Raspberry Pi时,我要执行以下操作:
使用默认的piuser,创建一个名为my\u new\u admin
使用新的my\u new\u admin用户,停用默认的pi用户
继续以my\u new\u admin
我发现单凭一本剧本很难做到这一点。甚至可以在Ansible中这样切换活动用户吗
#inventory.yaml
---
全部:
儿童:
rpis:
主持人:
myraspberrypi.example.com:
回答用户:我的新管理员还是“pi
在我的Ansibledefaults.yml中,我有:
plugins:
- name: myfirstplugin
install: true
- name: ....
install: true
etc...
我有一个部署模板的任务。如果myfirstplugin设置为安装(install:true),我希望在此模板中添加一个部分
因此,在我的模板中,我需要如下内容:
{% if plugins.name.['myfirstplugin'].install is
我想将playbook在远程主机上的执行存储在指定目录中
例如,在playbook下面,我想要在执行以下任务的远程主机上执行的全部输出
主机:本地主机
任务:
名称:将svn文本文件复制到{{tgt1.stdout}}文件夹
副本:
src:/u01/checkout/
目的地:/u01/结帐/
遵循:正确
模式:0755
名称:提交更改
shell:svnci——用户名竹子——密码竹子
args:
chdir:/checkout/checkout/
在regex_findall中,我硬编码了一个值为v12201,我想用变量替换它。如果是这样,在regex_findall中使用的语法是什么?提前谢谢。我尝试了以下方法,效果很好
- name: Get names for all running Oracle databases from oratab file
slurp:
src: /etc/oratab
register: oracle_patch_oratab
- name: Extract a list of DBs
我有一个用户foo,它能够对a(self)和B执行无密码ssh。playbook需要sudo访问,我正在使用been升级其中,下面的命令工作正常
ansible-playbook -i ../inventory.ini --user=foo --become --become-user=root echo_playbook.yml
但是上面的命令是shell脚本的一部分,它没有foo的权限。所以,当我使用sudo触发shell脚本时,ansible说主机不可访问。因此,我使用sudo尝试了an
我正在尝试列出已找到匹配项的名称
- name: search for files containing string
find:
paths: /root/ansible-dir
patterns: "file3.yml"
contains: "{{ item }}"
with_items: "{{ names_list }}"
register: file_match
- name: print file
我的剧本中有以下任务
-名称:删除
文件:
dest:'/folder1/{{item}}'
国家:缺席
有以下项目:
-“{{file_list}}”
寄存器:结果
-调试:
msg:“{{item}}”
有以下项目:
-“{result.results | map(attribute='diff')| list}”
当删除{{file_list}中的所有文件时,我能够以正确的格式调试调试调试模块中的所有diff属性。但是如果{{file_list}的文件名错误,我将在debugmsg中得到
我正在寻找一种方法,在Ansible playbook中指定多个组作为主机,当这些组位于单独的清单中时(这类似于,但不同,因为该问题假设一个清单)
假设我有一本叫做《改变事物》的剧本。有时我想改变开发,有时qa,有时生产,等等:
ansible playbook-i development-i production change\u things.yml
假设有单独的库存,大致如下所示:
# development inventory
[development]
10.0.0.1
10.0.0
我想在变量接口名称中设置if等于命令行上的变量传递,所以我使用jinja如下:
- name: Inizializzo la rete
hosts: all
gather_facts: true
become: yes
become_user: root
tasks:
- name: stampo interfacce
set_fact:
privata: "{% for interfacce in ansible_interfa
我对此很困惑。如果我有一个包含以下内容的文件:
users:
- name: jconnor
first: john
last: connor
uid: 3003
- name: sconnor
first: sarah
last: connor
uid: 3001
如何获取每个用户的详细信息?有了这个简单的剧本:
- name: create users
hosts: localhost
gather_facts: false
tasks:
- nam
我有一个yml文件,它使用powershell在windows节点上安装ODBC连接。对于每种DB类型,我们都有不同的yml文件,每个yml都有针对不同数据库的安装脚本
因此,每当我们想要更改或添加一个新连接时,我们都会注释掉所有只需要执行的连接,这需要在更改或添加连接时进行大量手动操作
以下是我定义win_命令的方式:
-名称:运行xxxx Oracle
win_命令:powershell-executionpolicy无限制文件夹:\xxx.ps1-Server{XXXX_DB_Server
通过网络执行命令时,\u cli连接插件到远程设备,结果出现以下错误。我理解连接被拒绝错误消息的原因。我想知道下面的错误结果中的True表示什么
2018-12-02 01:02:16102 p=1224 u=root |致命:[node1]:失败!=>
{“ansible_事实”:{“发现了解释器_python”:
“/usr/bin/python”},“changed”:false,“msg”:”(u'[Errno 111]
连接被拒绝,True),“rc”:1}
Ansible与Pytho
我想检查/tmp目录的磁盘空间,如果磁盘空间大于70%,则删除一些文件
这是我的密码
-名称:检查磁盘空间
shell:“df-P | grep/tmp | awk'$5>=70{print}”
注册:op
-区块:
-名称:清理
查找:
路径:/tmp
年龄:10天
递归:是的
登记号码:天
-名称:删除
文件:
路径:/tmp
国家:缺席
带_项:“{tendays.files}”
当:{{op.stdout_lines}}="" '
-区块:
-调试:
味精:
-“磁盘空间正常”
当:“{
我使用Ansible进行API调用,该调用返回一个巨大的数据集,我需要能够获得一个嵌套值以打印到屏幕上。我尝试使用json_查询,但不确定我做错了什么
我的任务:
- name: Get certificate by CN name.
uri:
method: GET
url: "https://mayapi/api/1/certificates?filter=cn;{{ inventory_hostname }}"
1 2 3 4 5 6 ...
下一页 最后一页 共 103 页