小编tlo*_*tlo的帖子

Ansible 手册:打印一条消息

可能以前已经问过这个问题,但还找不到任何有用的东西。

我有这个任务:

 - 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)

我希望此消息在创建文件夹任务中打印,而不是在单独的任务中打印。

如有帮助,将不胜感激

yaml ansible

5
推荐指数
1
解决办法
2万
查看次数

Ansible playbook 复制失败 - 消息:找不到 src

我是 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)

copy file ansible

4
推荐指数
1
解决办法
1万
查看次数

从命令行覆盖Ansible剧本“ serial”

我们serial几乎在所有手册中都使用了该手册,但在某些情况下,我们需要进行快速更改,并且Ansible不必遵守该serial限制。

有没有一种方法可以serial从命令行中将标志作为ansible-playbook命令的一部分覆盖?

代码示例:

- hosts: database
  serial: 1
  become: yes
Run Code Online (Sandbox Code Playgroud)

提前谢谢了!

ansible

4
推荐指数
1
解决办法
2898
查看次数

如何用Docker-compose编写一本Ansible剧本

请帮忙,我有下面的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)

ansible docker

3
推荐指数
1
解决办法
1万
查看次数

如何在Rust中计算正则表达式匹配数?

我想用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版本。

regex rust

3
推荐指数
1
解决办法
82
查看次数

Ansible 剧本 - 什么是剧本?

我刚刚开始学习 Ansible 并且有一个关于什么定义“游戏”的问题。如果我在看一座寺庙,我的理解是戏剧通常以以下内容开头:

-
  name: xxx
  hosts: yyy
Run Code Online (Sandbox Code Playgroud)

我读过name : 关键字不是必需的(但强烈推荐)。那么在这种情况下,我怎么知道一场戏从哪里开始,下一场从哪里开始呢?当剧本中有多个剧本时,哪些关键字分隔/划定了一个剧本?

谢谢,

安迪

ansible

3
推荐指数
1
解决办法
625
查看次数

带有变量的剧本的 ansible 剧本

我什至不确定这是否可能。

我知道你可以有一个剧本来调用其他剧本..

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..

我的问题是如何在 …

variables ansible ansible-playbook

1
推荐指数
1
解决办法
9620
查看次数

如何在ansible中循环主机名或IPS

我试图在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 ansible-playbook

1
推荐指数
3
解决办法
1万
查看次数

获取Ansible-Playbook运行信息

如果一切正常,或者某些任务进行了更改,则ansible-playbook运行将返回0。

我正在寻找一种方法,以便在上次运行期间发生更改时在命令行中获取信息。

有人知道这种方法吗?

背景是我想通过Jenkins管道监视我的服务器,并在发生更改时得到警报。

谢谢你的帮助。

command-line return jenkins ansible

1
推荐指数
1
解决办法
844
查看次数