目标:
目前的剧本:
- name: stat directories if they exist
stat:
path: "{{ item }}"
with_items:
- /data/directory
- /data/another
register: myvar
- debug: var=myvar.results
- name: create directory if they don't exist
file:
path: "{{ item.invocation.module_args.path }}"
state: directory
owner: root
group: root
mode: 0775
with_items: "{{ stat.results }}"
# when: myvar.results.stat.exists == false
Run Code Online (Sandbox Code Playgroud)
的when说法是错误的.
我看了一下提供的例子; http://docs.ansible.com/ansible/stat_module.html.但这仅适用于单个文件夹.
我正在ifbash 脚本中运行一条语句。我需要在不同的服务器上部署 bash 脚本。下面是我的 if else 语句。
DIR="/backup/db"
first_time=true
{% if [ -d "$DIR" ]; then %}
first_time=false
sudo -u tomcat ln -s /backup/app /opt/tomcat/latest/webapps/msales
sudo -u tomcat ln -s /backup/store/logs /opt/tomcat/latest/logs
.....etc
{% fi %}
Run Code Online (Sandbox Code Playgroud)
我正在使用 Ansible 将此script.sh.j2部署到其他服务器。但它说
""msg": "AnsibleError: 模板化字符串时出现模板错误:预期标记 ',', 得到 'string'。"
如何在j2模板中使用if语句?
我想根据另一个列表从列表中删除一个项目.
"my_list_one": [
"item1",
"item2",
"item3"
] }
Run Code Online (Sandbox Code Playgroud)
我的第二个清单:
"my_list_two": [
"item3"
] }
Run Code Online (Sandbox Code Playgroud)
如何从此列表中删除"item3"以设置新事实?
我尝试使用' - '和这个:
set_fact: "{{ my_list_one | union(my_list_two) }}"
Run Code Online (Sandbox Code Playgroud)
最终目标:
"my_list_one": [
"item1",
"item2"
] }
Run Code Online (Sandbox Code Playgroud) 我想要一个用于 CentOS 7 的 OpenSSL 1.1.1 RPM 包。(不是 1.1.0...)
我在谷歌上搜索了这个非常具体的 RPM 文件,但它根本不可用。
我也发了邮件openssl-users,但没有人回复正确的答案。
- - 编辑 - -
最后,该包可用。
我有 Docker 镜像,它们是从私人存储库中提取的:
docker pull xxxxxxxxxxxx.dkr.ecr.eu-west-1.amazonaws.com/image/name:base
base: Pulling from image/name
Digest: sha256:3ac2e726336b9048a4bdcc2188bcca0d30e282892f78169939ae42f76c13bd57
Status: Downloaded newer image for xxxxxxxxxxxx.dkr.ecr.eu-west-1.amazonaws.com/image/name:base
Run Code Online (Sandbox Code Playgroud)
然后使用缓存构建图像:
docker build --cache-from xxxxxxxxxxxx.dkr.ecr.eu-west-1.amazonaws.com/image/name:base:base -t xxxxxxxxxxxx.dkr.ecr.eu-west-1.amazonaws.com/image/name:base -t simage/name:base -f Dockerfile.base .
Run Code Online (Sandbox Code Playgroud)
获取缓存错误:
importing cache manifest from xxxxxxxxxxxx.dkr.ecr.eu-west-1.amazonaws.c...
digest: sha256:7d93b70e81596668b75abedddf217ef3a7dfc0fc4b43141caad899a350105ca3
name: "importing cache manifest from xxxxxxxxxxxx.dkr.ecr.eu-west-1.amazonaws.com/image/name:base"
started: 2020-02-18 11:11:49.478586089 +0000 UTC
completed: 2020-02-18 11:11:49.706587921 +0000 UTC
duration: 228.001832ms
error: "invalid build cache from {MediaType:application/vnd.docker.distribution.manifest.v2+json Digest:sha256:3ac2e726336b9048a4bdcc2188bcca0d30e282892f78169939ae42f76c13bd57 Size:3665 URLs:[] Annotations:map[] Platform:<nil>}"
error on cache query: invalid build cache from {MediaType:application/vnd.docker.distribution.manifest.v2+json Digest:sha256:3ac2e726336b9048a4bdcc2188bcca0d30e282892f78169939ae42f76c13bd57 Size:3665 URLs:[] Annotations:map[] …Run Code Online (Sandbox Code Playgroud) 使用Ansible 2.1.4.0
是否可以sticky bit在1个任务中设置和文件夹权限?
例;
# Shell is used over find module cause symlink breaks and performance
- name: Find directories in /tmp which are not valid
shell: find
/tmp/test -type d
\( ! -user root -o ! -group root -o ! -perm 775 \)
register: find1
- name: Set 775 for found directories
file:
path: "{{ item }}"
owner: root
group: vagrant
mode: 0775
state: directory
with_items: "{{ findPermission1.stdout_lines | default([]) }}"
- name: Find directories in …Run Code Online (Sandbox Code Playgroud) 运行Playbook时,Ansible会将节点随机设置为第一个,第二个和第三个节点.
TASK [setup] ********
ok: [node-p02]
ok: [node-p03]
ok: [node-p01]
Run Code Online (Sandbox Code Playgroud)
如何配置Ansible以确保其播放为:
TASK [setup] ********
ok: [node-p01]
ok: [node-p02]
ok: [node-p03]
Run Code Online (Sandbox Code Playgroud)
Serial: 1 不是一个选项,因为它减慢了游戏速度,我的剧本只适用于一个游戏中的3个节点.
回购中的实际包名称为package-2.6.12-3.el7.x86_64。
目标是使用Ansible安装软件包,以便:
该仓库可以不时更新软件包,但我不知道何时。
我的想法是安装这样的软件包;
- name: Install package
yum:
name: package-2.6
state: present
Run Code Online (Sandbox Code Playgroud)
但是任务失败,因为package-2.6不在仓库中。尽管package该方法很简单,但并不是未来的证明。
更新:
似乎通配符* do有效,例如package-2.6*。
Ansible 2.0.4.0
大约有三个任务随机失败.失败的输出是:
OSError: [Errno 32]
Broken pipefatal: [machine1]: FAILED! => {"failed": true, "msg": "Unexpected failure during module execution.", "stdout": ""}
Run Code Online (Sandbox Code Playgroud)
是否可以忽略错误,如果Errno 32在错误的输出中.
- name: This task sometimes fails
shell: fail_me!
ignore_errors: "{{ when_errno32 }}"
Run Code Online (Sandbox Code Playgroud)
我知道这是一个解决方法.解决'真实'问题可能会占用更多时间.
在网上寻找Scrapy解决验证码时,我什至没有很好的例子可以入手。
我创建了一个非常基本的验证码页面。http://145.100.108.148/login3/
是否有人提供了可行的示例来解决此问题,或者至少以体面的方式配置了Scrapy来尝试解决此问题。
ansible ×7
jinja2 ×2
python ×2
amazon-ecr ×1
bash ×1
caching ×1
captcha ×1
docker ×1
dockerfile ×1
openssl ×1
packages ×1
permissions ×1
rpm ×1
scrapy ×1
scripting ×1