Ansible pip模块:名称包和umask 0022致命错误:以8为基数的int()的文本无效:';18';umask必须是八进制整数
ansible/ansible剧本版本:2.1.2.0 我的剧本中有以下动作:Ansible pip模块:名称包和umask 0022致命错误:以8为基数的int()的文本无效:';18';umask必须是八进制整数,pip,ansible,ansible-playbook,ansible-2.x,octal,Pip,Ansible,Ansible Playbook,Ansible 2.x,Octal,ansible/ansible剧本版本:2.1.2.0 我的剧本中有以下动作: - name: Install cli (as well) pip: name: "{{ mycompany_pip_pkg }}" umask: 0022 为什么即使我遵循Ansiblepip模块的文档,仍会收到以下致命错误消息: 错误: TASK [company.company-ansible : Install cli (as well)] **************** fatal:
- name: Install cli (as well)
pip:
name: "{{ mycompany_pip_pkg }}"
umask: 0022
为什么即使我遵循Ansiblepip
模块的文档,仍会收到以下致命错误消息:
错误:
TASK [company.company-ansible : Install cli (as well)] ****************
fatal: [localhost]: FAILED! => {"changed": false, "details": "invalid literal for int() with base 8: '18'", "failed": true, "msg": "umask must be an octal integer"}
Ansiblepip
Docs说:
安装pip软件包之前,系统umask。这
例如,当安装在具有非常高性能的系统上时
默认情况下限制umask(例如0077),并且您希望pip安装
所有用户都要使用的包。请注意,这需要
您需要以八进制指定所需的umask模式,前导为0(例如。,
0077)
显示以下代码:
if umask and not isinstance(umask, int):
try:
umask = int(umask, 8)
except Exception:
module.fail_json(msg="umask must be an octal integer",
details=to_native(sys.exc_info()[1]))
PS:以下语法有效!但为什么上面的方法不起作用呢
- name: Install cli (as well)
pip: name="{{ mycompany_pip_pkg }}" umask=0022
更新:问题:
1) 为什么在Ansible
pip
模块中,当name
属性的值包含无效的包名时,该模块在umask
属性的值方面失败(在我的情况下这是正确的)?key=value
格式的模块,即使是自由格式(YAML样式)仍接受参数,但不建议使用
从
模块也可以采用自由形式的参数,而不是键值或json
但不建议这样做
用引号将umask包装起来对我很有用。 pip: 姓名:uwsgi 国家:现在 乌马斯克:“0022”
# ls -lah /bin/uwsgi -rwxr-xr-x. 1 root root 1.3M Jan 21 12:12 /bin/uwsgi
只需将umask值括在引号中
不起作用:
pip:
name:
- pika
- argparse
umask: 0022
是否有效:
pip:
name:
- pika
- argparse
umask: "0022"
“文件”模块也会出现同样的问题,直到用修复。正如其他人所指出的,使用key=value语法也能起作用。好的,我找到了解决方案,但是,为什么第一部分的语法不起作用呢!我同意。想知道为什么他们会在文档中提到同样的内容,请参阅他们的最后一个示例。如果我使用自由形式的YAML语法而不使用
umask:0022或umask:。。。属性,它正在工作。我在其他模块的剧本中使用了自由形式的YAML语法,它们都可以工作。我认为需要为umask
属性修复pip.py
。我看到使用自由形式YAML的优点是更好的缩进/用户阅读友好的语法-与将所有属性/变量放在一行相比。我更新了我的帖子,现在我的帖子提出了一个有效的问题:)(我在做了一些调查后发现)希望你能提供一些线索。我不认为“自由形式”这个词在这里应用于YAML样式。你对此有什么参考资料吗?包括不推荐YAML风格的明确声明?我认为自由风格指的是,例如,local\u action
模块,您可以将模块指定为键值或直接指定为local\u action
的值。是的,我也这样做了:pip:name=“{{pip\u pkg}}”umask=“0022”
但在同一行,而不是自由形式的yaml形式