如果我必须执行以下3个命令,我该如何对它们进行分组,所以我只需要调用一个命令?
salt '*' git.fetch cwd=/var/git/myproject opts='--all' user=git
salt '*' git.pull cwd=/var/git/myproject opts='origin master'
salt '*' nginx.signal reload
Run Code Online (Sandbox Code Playgroud)
我可以使用面料把它们放在一个函数中说deploy可能接受一个minion名称然后通过master运行,但是我想知道saltstack是否有内置的东西?
I want to set strong password for mysql root user. But there is a egg-hen problem. I have empty server. I salt it. The root password is empty (by default after install).
If I use
root:
mysql_user.present:
- name: root
- password: $ecur3h4x0r
- host: %
Run Code Online (Sandbox Code Playgroud)
Then I would not be able to call any other mysql states because they would need the password. But the next time I do highstate this call would not work, because the state tries …
我正在寻找一种简单的方法来获取有关内存使用情况的信息,例如salt minions的免费内存.
到目前为止,我知道可以列出总内存,salt '*' grains.items但我甚至不知道如何只列出总内存而不是全谷值数据.
第二个问题是我不知道如何获得返回的空闲内存.
我最近在这里的一个帖子的盐柱中看到了以下结构
/srv/pillar/ssh.sls:
ssh_certs:
{% if grains['fqdn'] == 'server1.example.com' %}
dsa: |
-----BEGIN DSA PRIVATE KEY-----
{# key text goes here with consistant indentation... #}
-----END DSA PRIVATE KEY-----
ecdsa: |
-----BEGIN ECDSA PRIVATE KEY-----
{# key text goes here with consistant indentation... #}
-----END ECDSA PRIVATE KEY-----
rsa: |
-----BEGIN RSA PRIVATE KEY-----
{# key text goes here with consistant indentation... #}
-----END RSA PRIVATE KEY-----
{% elif grains['fqdn'] == 'server2.example.com' %}
# same as above but …Run Code Online (Sandbox Code Playgroud) 目前我有以下创建目录的规则
/init/dir:
file.recurse:
- source: salt://init_dir/init
- user: name
- group: group
- name: /path/init
- dir_mode: 2775
- file_mode: 777
Run Code Online (Sandbox Code Playgroud)
现在我想只在目录不存在的情况下才在新的minions上创建一个目录.
有没有人尝试使用saltstack创建AWS AMI(图像).
我尝试使用它能够从现有的AMI创建新实例,但如何使用salt-cloud创建图像?
也尝试使用boto_ec2,但它给出了模块'boto_ec2'不可用的错误.
我不知道为什么这个流浪汉的构建不起作用.我正在尝试使用https://docs.saltstack.com/en/getstarted/fundamentals/index.html上的 saltStack教程信息构建
得到以下错误.
无法在远程目录中找到或无法访问"ubuntu/trusty64"框.如果这是HashiCorp的Atlas上的私人包装盒,请确认您已登录
vagrant login.另外,请仔细检查名称.扩展的URL和错误消息如下所示:
网址:[" https://atlas.hashicorp.com/ubuntu/trusty64 "]错误:
操作系统OSX vagrant版本1.8.7
我不知所措
我想要的是由Minion调用的类似RPC的行为放入某种脚本,然后可以由任何(非Salt,非Python)应用程序和服务调用:
我知道我可以使用salt-call和salt.modules.event.fire_master模块向主人发送事件.
那我该如何等待响应事件呢?
如何确保其他Minions无法在事件总线上看到响应事件(从主人发送的所有事件都是公开的,并且过滤发生在Minion端)?我考虑过gpg渲染器,但这可能太复杂了 - 需要有一种方法,因为Master需要将敏感的Pillar数据发送给具有类似要求的Minions.
在我们的基础设施中,我们在 minion 上设置了多个grain,包括“环境”和“组件”grain。基于此,可以有多个具有相同组件名称的 Minion,每个 Minion 位于不同的环境中。我希望能够基于多个grain来选择minions,而不必在master上定义多个节点组。
我努力了:
salt -G 'component:api,environment:prod' test.ping
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用,我相当广泛地查看了他们的文档,但没有找到这种类型的小兵目标的示例。
这是否可能,如果可以,我将如何去做?
如果你看一下设置的主机是SaltStack,那么它有时候就像用vi查看二进制文件一样.
您不知道配置文件是如何创建的.
这会很难解决问题.文件来源的逆向工程需要花费太多时间.
我的目标:通过查看minion(由salt创建)上的unix配置文件到配置来源的源,可以轻松找到方法.就像$Id$在svn和cvs中一样.
我和朋友的一个想法是:
状态file.managed应该(可选)添加文件的源.
例:
我的sls文件包含这个:
file_foo_bar:
file.managed:
- source:
- salt://foo/bar
Run Code Online (Sandbox Code Playgroud)
然后,创建的文件应包含此注释.
# Source: salt://foo/bar
Run Code Online (Sandbox Code Playgroud)
当然这并不简单,因为将注释放入配置文件有不同的方法.
这可行吗?或者是否有更好的解决方案来实现我的目标.
更新
通常我知道我做错了什么,并且可以轻松找到根.如果有几个人在州树上工作,就会出现问题.
debugging reverse-engineering configuration-management salt-stack
salt-stack ×10
devops ×2
amazon-ec2 ×1
automation ×1
debugging ×1
linux ×1
macos ×1
python ×1
salt-cloud ×1
vagrant ×1