可能以前已经问过这个问题,但还找不到任何有用的东西。
我有这个任务:
- name: Create folder if not exists
win_file:
path: '{{ folder }}'
state: directory
when: my_dir.stat.exists == false << this stat has been previously created
- Debug: msg"folder already exists"
Run Code Online (Sandbox Code Playgroud)
如果我执行 Ans 中的输出。塔看起来像这样(文件夹已经存在):
TASK [playbook : Create folder if not exists] ***
17:51:00
23
skipping: [host]
TASK [playbook : debug] ***************************************
18:16:07
26
ok: [host] => {
27
"msg": "Folder already exists"
Run Code Online (Sandbox Code Playgroud)
我希望此消息在创建文件夹任务中打印,而不是在单独的任务中打印。
如有帮助,将不胜感激
我是 ansible 新手,我正在尝试使用 ansible 将文件从一个目录复制到远程 RH 计算机上的另一个目录。
---
- hosts: all
user: root
sudo: yes
tasks:
- name: touch
file: path=/home/user/test1.txt state=touch
- name: file
file: path=/home/user/test1.txt mode=777
- name: copy
copy: src=/home/user/test1.txt dest=/home/user/Desktop/test1.txt
Run Code Online (Sandbox Code Playgroud)
但它会抛出如下错误
[root@nwb-ansible ansible]# ansible-playbook a.yml -i hosts
SSH password:
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [auto-0000000190]
TASK: [touch] *****************************************************************
changed: [auto-0000000190]
TASK: [file] ******************************************************************
ok: [auto-0000000190]
TASK: [copy] ******************************************************************
failed: [auto-0000000190] => {"failed": true}
msg: could not find src=/home/user/test1.txt
FATAL: all hosts have already failed …Run Code Online (Sandbox Code Playgroud) 我们serial几乎在所有手册中都使用了该手册,但在某些情况下,我们需要进行快速更改,并且Ansible不必遵守该serial限制。
有没有一种方法可以serial从命令行中将标志作为ansible-playbook命令的一部分覆盖?
代码示例:
- hosts: database
serial: 1
become: yes
Run Code Online (Sandbox Code Playgroud)
提前谢谢了!
请帮忙,我有下面的docker-compose文件,我想编写一个Ansible playbook,它在localhost和远程目标上运行docker-compose文件.
version: '2.0'
services:
weather-backend:
build: ./backend
volumes: #map backend dir and package inside container
- './backend/:/usr/src/'
- './backend/package.json:/usr/src/package.json'
#ports:
# - "9000:9000" #expose backend port - Host:container
ports:
- "9000:9000"
command: npm start
weather-frontend:
build: ./frontend
depends_on:
- weather-backend
volumes:
- './frontend/:/usr/src/'
- '/usr/src/node_modules'
ports:
- "8000:8000" #expose ports -Host:container
environment:
NODE_ENV: "development"
Run Code Online (Sandbox Code Playgroud) 我想用Rust计数字符串中正则表达式的匹配项。我设法打印了所有匹配项:
let re = Regex::new(r"(?i)foo").unwrap();
let result = re.find_iter("This is foo and FOO foo as well as FoO.");
for i in result {
println!("{}", i.as_str())
}
Run Code Online (Sandbox Code Playgroud)
但是我不能简单地得出比赛的次数。我找不到任何可以计数的函数。我也尝试过size_hint(),但是效果不佳。有什么办法可以做到吗?
这是我正在寻找的Scala版本。
我刚刚开始学习 Ansible 并且有一个关于什么定义“游戏”的问题。如果我在看一座寺庙,我的理解是戏剧通常以以下内容开头:
-
name: xxx
hosts: yyy
Run Code Online (Sandbox Code Playgroud)
我读过name : 关键字不是必需的(但强烈推荐)。那么在这种情况下,我怎么知道一场戏从哪里开始,下一场从哪里开始呢?当剧本中有多个剧本时,哪些关键字分隔/划定了一个剧本?
谢谢,
安迪
我什至不确定这是否可能。
我知道你可以有一个剧本来调用其他剧本..
IE:
---
# MasterPlaybook.yml
- include: playbook1.yml
when: some_var == "true"
- include: playbook2.yml
when: someother_var == "true"
Run Code Online (Sandbox Code Playgroud)
如果我调用 MasterPlaybook.yml 并传入 Vars,这将起作用。
但是我想包括来自其他一些 yml 的变量,例如这里是 myvars.yml
some_var: "true"
someother_var: "false"
Other_var: "Foo"
Run Code Online (Sandbox Code Playgroud)
因此,如果我希望将其包含在 playbook1.yml 中,我只需添加..
---
- name: Script Play use variables to get and push out the code
hosts: somegroup
remote_user: "some user"
vars:
url: 'The url of the build'
buildNumber: 'the build number'
jobName: 'passed in job name'
vars_files:
- ~/myvars.yml
serial: 1
Run Code Online (Sandbox Code Playgroud)
它会拉入 vars..
我的问题是如何在 …
我试图在ubuntu 14.04中使用ansible playbook设置和配置起搏器.
截至目前,我只是在1节点测试它.因此在hosts文件中我只保留了该节点的信息
[hostname]
1.2.3.4 ansible_ssh_private_key_file=/home/ubuntu/test.pem
Run Code Online (Sandbox Code Playgroud)
在剧本Yaml文件我试图安装以及配置起搏器
- hosts: all
sudo: yes
tasks:
- name: install pacemaker
apt: name=pacemaker state=present
- name: install corosync
apt: name=corosync state=present
- name: install fence-agents
apt: name=fence-agents state=present
#- copy: src=corosync_start dest=/etc/default/corosync
#- shell: update-rc.d -f pacemaker remove
#- shell: update-rc.d pacemaker start 50 1 2 3 4 5 . stop 01 0 6 .
Run Code Online (Sandbox Code Playgroud)
在我的节点中正确安装.但是对于配置,我需要编辑/etc/corosync/corosync.conf,其中我需要指定我的主机地址来代替bindnetaddress.
假设在[hostname]部分下有超过1个条目有任何方式在ansible我可以在我的YAML文件中循环它们
我正在尝试使用sed命令来替换IP.但是,请你帮忙解决如何循环或打印Ips的问题.
我试过这样的
- hosts: all
sudo: yes
tasks:
- debug: msg = "{{ ansible_hostname }}"
- …Run Code Online (Sandbox Code Playgroud) 如果一切正常,或者某些任务进行了更改,则ansible-playbook运行将返回0。
我正在寻找一种方法,以便在上次运行期间发生更改时在命令行中获取信息。
有人知道这种方法吗?
背景是我想通过Jenkins管道监视我的服务器,并在发生更改时得到警报。
谢谢你的帮助。