标签: ansible-playbook

为什么我无法提示将由多个播放器共享的变量(ansible 1.6.5)

我已经提炼了一个有三个剧本的剧本.目标是在一次播放中从提示中收集数据库密码,然后在其他两次播放中使用相同的密码.

---

- name: database password
  hosts:
    - webservers
    - dbservers
  vars_prompt:
    - name: "db_password"
      prompt: "Enter Database Password for databse user root"
      default: "root"

- hosts: dbservers
  tasks:
    - command: echo {{db_password | mandatory }}


- hosts: webservers
  tasks:
    - command: echo {{db_password | mandatory }}
Run Code Online (Sandbox Code Playgroud)

它失败,如下所示.

Enter Database Password for databse user root [root]: 

PLAY [database password] ****************************************************** 

GATHERING FACTS *************************************************************** 
ok: [vc-dev-1]

PLAY [dbservers] ************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [vc-dev-1]

TASK: [command echo {{db_password | mandatory}}] *************************** …
Run Code Online (Sandbox Code Playgroud)

ansible ansible-playbook

17
推荐指数
2
解决办法
5597
查看次数

ansible忽略任务上的run_once配置

我正在使用Ansible,我只想运行一次任务.我按照有关如何配置和运行任务一次的文档

- name: apt update
  shell: apt-get update
  run_once: true
Run Code Online (Sandbox Code Playgroud)

但是当我运行Ansible时,它总是运行这个任务.我怎么能只运行一次我的任务.

task idempotent ansible ansible-playbook

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

如何在同一个字符串中转义YAML中的双引号和单引号

我需要在ansible playbook中正确地转义单引号和双引号以设置环境变量.这些都不起作用:

  - name: Set environment variable
    command: >
      export EXTRA_CONFIG=“'”{"client": {"subscriptions": ["DIND-Worker"], "cluster": "internal"}}“'”

  - name: Set environment variable
    command: >
      export EXTRA_CONFIG=''{"client": {"subscriptions": ["DIND-Worker"], "cluster": "internal"}}''

  - name: Set environment variable
    command: >
      export EXTRA_CONFIG=''{\"client\": {\"subscriptions\": [\"DIND-Worker\"], \"cluster\": \"internal\"}}''
Run Code Online (Sandbox Code Playgroud)

看着这个:

http://yaml.org/spec/current.html#id2532720

https://github.com/dotmaster/toYaml/issues/1

我得到的错误信息是:

fatal: [ip.address]: FAILED! => {"changed": false, "cmd": "export 'EXTRA_CONFIG={\"client\":' '{\"subscriptions\":' '[\"DIND-Worker\"],' '\"cluster\":' '\"internal\"}}'", "failed": true, "msg": "[Errno 2] No such file or directory", "rc": 2}
Run Code Online (Sandbox Code Playgroud)

yaml escaping ansible ansible-playbook

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

使用同步时,Ansible会提示输入密码

我用以下方式使用ansible:

ansible-playbook -f 1 my-play-book.yaml --ask-pass --ask-sudo-pass

在此之后,我被要求输入ssh和sudo密码(两者的密码相同).

在我的playbook文件中,我正在使用同步任务:

synchronize: mode=push src=rel/path/myfolder/ dest=/abs/path/myfolder/

对于每个主机,我被提示输入远程主机的ssh密码(与我在playbook运行开始时输入的密码相同)

如何在执行同步任务时避免输入密码?

passwords ssh rsync synchronize ansible-playbook

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

Ansible角色和处理程序 - 无法让角色处理程序工作

我需要在Centos 6.5中设置Apache/mod_wsgi,所以我的主要YAML文件是这样的:

---
- hosts: dev
  tasks:
    - name: Updates yum installed packages
      yum: name=* state=latest


- hosts: dev
  roles:
    - { role: apache }
Run Code Online (Sandbox Code Playgroud)

这应该更新所有yum安装的包然后执行apache角色.

apache角色配置为安装Apache/mod_wsgi,将Apache设置为在引导时启动并重新启动它.以下是内容roles/apache/tasks/main.yml:

---
- name: Installs httpd and mod_wsgi
  yum: name={{ item }} state=latest
  with_items:
    - httpd
    - mod_wsgi
  notify:
    - enable httpd
    - restart httpd
Run Code Online (Sandbox Code Playgroud)

和处理程序roles/apache/handlers/main.yml:

---
- name: enable httpd
  service: name=httpd enabled=yes

- name: restart httpd
  service: name=httpd state=restarted
Run Code Online (Sandbox Code Playgroud)

由于在执行playbook时给出了以下输出,因此处理程序似乎无法运行:

PLAY [dev] ******************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [dev.example.com] …
Run Code Online (Sandbox Code Playgroud)

ansible-playbook

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

角色和任务是否存在于同一个剧本中?

---
# file: main.yml

- hosts: fotk
  remote_user: fakesudo
  tasks:
  - name: create a developer user
    user: name={{ user }}
          password={{ password }}
          shell=/bin/bash
          generate_ssh_key=yes
          state=present
  roles:
  - { role: create_developer_environment, sudo_user: "{{ user }}" }
  - { role: vim, sudo_user: "{{ user }}" }
Run Code Online (Sandbox Code Playgroud)

由于某种原因,创建用户任务未运行.我在Google上搜索了我能想到的每个关键词,找不到答案但没有成功.

角色正在运行,这很奇怪.

一个剧本是否可以包含任务和角色?

ansible ansible-playbook

16
推荐指数
4
解决办法
7478
查看次数

如何使用ansible读取json文件

我的ansible脚本所在的目录中有一个json文件.以下是json文件的内容:

{ "resources":[
           {"name":"package1", "downloadURL":"path-to-file1" },
           {"name":"package2", "downloadURL": "path-to-file2"}
   ]
}
Run Code Online (Sandbox Code Playgroud)

我试图使用get_url下载这些包.以下是方法:

---
- hosts: localhost
  vars:
    package_dir: "/var/opt/"
    version_file: "{{lookup('file','/home/shasha/devOps/tests/packageFile.json')}}"

  tasks:
    - name: Printing the file.
      debug: msg="{{version_file}}"

    - name: Downloading the packages.
      get_url: url="{{item.downloadURL}}" dest="{{package_dir}}" mode=0777
      with_items: version_file.resources
Run Code Online (Sandbox Code Playgroud)

第一个任务是正确打印文件的内容,但在第二个任务中,我收到以下错误:

[DEPRECATION WARNING]: Skipping task due to undefined attribute, in the future this
will be a fatal error.. This feature will be removed in a future release. Deprecation
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
Run Code Online (Sandbox Code Playgroud)

ansible ansible-playbook ansible-2.x

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

在ansible-playbook中清除错误输出

如果任何Ansible任务失败,则会出现错误输出,Playbook将显示转义的换行符'\n'.对于追溯,跨越多行,这使得它很难阅读.

有没有一种方法,使ansible,剧本显示,从输出转义错误shell,pip,git以及其他类似的任务?

ansible ansible-playbook

16
推荐指数
2
解决办法
4999
查看次数

在ansible lineinfile中引用

当我lineinfile在ansible中使用它不是写字',"字符 lineinfile: 'dest=/home/xyz state=present line="CACHES="default""'

它是给予,CACHES=default 但所需的输出是CACHES="default"

怎么做到这一点?

ansible ansible-playbook

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

Ansible如何在变量中"注册"包含剧本的结果?

一个变量中的Ansible剧本如何包含另一个剧本?register

例如,将以下寄存器执行的结果tasks/foo.ymlresult_of_foo

tasks:
  - include: tasks/foo.yml
  - register: result_of_foo
Run Code Online (Sandbox Code Playgroud)

Ansible如何记录任务序列的结果?

ansible ansible-playbook

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