Way*_*ner 5 command-line amazon-s3 amazon-web-services salt-stack
我在 Amazon S3 存储桶中有一些文件,我正在使用 SaltStack 将所有这些文件复制到 Minion 上的目录中。
不幸的是,SaltStack 没有能力从 S3 复制整个目录(还),所以我求助于使用awscli。它几乎完美地工作。
它可以同步 S3 存储桶和我的目录(万岁!),它甚至有一个--dryrun
标志(甚至更好!),但不幸的是,我无法想出一种方法让它做一些我可以用 Salt 捕获的事情,说有没有变化。
我有一个如下所示的 Salt 状态:
copy-my-dir:
file.directory:
- name: /path/to/my/dir
- makedirs: True
cmd.run:
- name: "aws s3 sync s3://my-bucket/ /path/to/my/dir"
- unless: "What goes here?"
Run Code Online (Sandbox Code Playgroud)
我试过--dry-run
“这里有什么?” 但是无论是否有要同步的文件,aws s3 sync 都会返回 0。
我试过了,aws --output json s3 sync --dry-run
但这甚至没有做任何有用的事情(即它不输出我可以判断的 JSON,至少在通过salt 'minion' cmd.run "aws..."
.
那么我如何判断我的 Amazon S3 存储桶和我的目录之间是否存在任何差异,以便我可以有条件地执行 SaltStack 状态?
事实证明,这个奇妙的grep
实用程序完全可以满足我的需要:
- onlyif: "aws s3 sync --dryrun s3://my-bucket /path/to/my/dir" | grep download"
Run Code Online (Sandbox Code Playgroud)
如果有事情要做,awscli 将输出download: <filename>
,但如果目录已同步,则不会有输出。
归档时间: |
|
查看次数: |
4359 次 |
最近记录: |