首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible:更改剧本位置

Ansible:更改剧本位置
EN

Stack Overflow用户
提问于 2020-05-08 10:42:59
回答 3查看 3.2K关注 0票数 4

我所有的剧本都在/etc/ansible/剧本里,我想在pc上的任何地方执行它们

我尝试在playbook_dir中配置ansible.cfg变量

代码语言:javascript
复制
[defaults]
playbook_dir = /etc/ansible/playbooks/

并尝试将ANSIBLE_PLAYBOOK_DIR变量放入~/..bashrc中。

代码语言:javascript
复制
export ANSIBLE_PLAYBOOK_DIR=/etc/ansible/playbooks/

但在这两种情况下,我只得到了相同的错误:

代码语言:javascript
复制
nor@nor:~$ ansible-playbook test3.yaml
ERROR! the playbook: test3.yaml could not be found

这是我的ansible版本:

代码语言:javascript
复制
ansible 2.9.7
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/nor/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.7/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.7.3 (default, Oct  7 2019, 12:56:13) [GCC 8.3.0]

有人知道这个问题以及如何解决吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-12 21:17:20

正如其他人所说的,ANSIBLE_PLAYBOOK_DIR用于设置角色/、文件/等的相对目录,它并不十分有用。

如果我理解了op,这就是我如何实现与所有版本的ansible相似的结果.

代码语言:javascript
复制
PPWD=$PWD cd /my/playbook/dir && ansible-playbook my_playbook.yml; cd $PPWD

解释过,

PPWD=$PWD是记住当前/当前/上一个工作目录,然后是cd /my/playbook/dir,如果成功,运行ansible-playbook my_playbook.yml (所有内容都是相对的);无论如何,始终更改回以前的工作目录。

票数 0
EN

Stack Overflow用户

发布于 2020-05-09 12:22:44

根据https://manpages.debian.org/testing/ansible/ansible-inventory.1.en.html的说法:

-剧本-dir 'BASEDIR‘ 因为这个工具不使用剧本,所以使用它作为一个次要的剧本,directory.This设置了许多特性的相对路径,包括角色/ group_vars/等等。

这意味着ANSIBLE_PLAYBOOK_DIR不被用作指定到您的剧本的绝对/相对路径的替代,但是它告诉剧本它应该在哪里查找角色、主机/组vars等等。

您想要达到的目标是在ansible方面没有解决方案,您需要相应地配置您的shell配置文件来实现这一点。在.bashrc文件中设置以下内容:

代码语言:javascript
复制
export playbooks_dir=/path/to/playbooks

当您调用剧本时,请使用ansible-playbook $playbooks_dir/test3.yml

票数 1
EN

Stack Overflow用户

发布于 2020-05-08 11:16:18

迪尔说:

“许多非剧本CLI有一个-剧本-dir参数;这设置了它的默认值。”

不幸的是,在文档中没有提示“非剧本CLI”可能是什么。显然,游戏手册不是其中之一。

FWIW如果您正在寻找面向命令行的框架,请尝试不稳定流道。例如,导出目录的位置

代码语言:javascript
复制
shell> export ansible_private=/path/to/<private-data-dir>

然后是运行剧本

代码语言:javascript
复制
shell> ansible-runner -p playbook.yml run $ansible_private
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61677294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档