使用CLI,我可以输入以下内容:
盐'*'test.ping -v
结果输出如下:
minion_A:
True
minion_B:
True
minion_C:
True
minion_D:
Minion没有回来
如何使用LocalClient?获得相同的结果?这就是我目前正在尝试的东西,只返回具有以下响应的小兵True:
self.localClient.cmd('*', 'test.ping', ['-v'])
Run Code Online (Sandbox Code Playgroud)
更新:
根据指示,有可能是一个错误与arg在命令中的元组,我也试过如下:
args = ('-v',)
return self.localClient.cmd('*', 'test.ping', arg=args)
Run Code Online (Sandbox Code Playgroud)
......可悲的是,仍然没有成功
noob saltstack问题
我有一个在salt状态(war文件)中创建的文件,我想在更改时将该文件复制到服务器的deploy目录.我认为file.managed这是正确的方法,所以类似于:
/var/lib/tomcat7/webapps/app.war:
file.managed:
- source: /home/user/project/build/release/app.war
- user: tomcat7
- group: tomcat7
Run Code Online (Sandbox Code Playgroud)
该文件是通过一个单独的状态构建的,该状态似乎正常运行.
当salt exec时state.highstate,输出为"无法确定源文件的上游哈希值/home/user/project/build/release/app.war"
有一个更好的方法吗?在一个状态下构建文件(因此它是本地的),然后在构建的文件更改时更新目标?谢谢你的建议.
我需要将我的支柱组织到子目录中.
/srv/pillar/
??? app1
? ??? env1
? ??? conf.sls
??? data.sls
??? top.sls
Run Code Online (Sandbox Code Playgroud)
我把它放在top.sls中:
base:
'*':
- data
- app1/env1/conf
Run Code Online (Sandbox Code Playgroud)
当我请求data.sls for variable时info,它可以工作:
salt '*' pillar.get info
local:
some data
Run Code Online (Sandbox Code Playgroud)
但是当我请求conf.sls变量时info,没有任何作用:
salt '*' pillar.get app1.env1.info
Run Code Online (Sandbox Code Playgroud)
没有显示!
我已经执行了:
saltutil.refresh_pillar
Run Code Online (Sandbox Code Playgroud)
并重新启动salt进程.
我该怎么做才能让盐柱识别子目录?
我正在尝试使用 SaltStack 配置我的 Vagrant 驱动的 VM。我想安装和配置 PostgreSQL。这是我的状态:
postgresql-installation:
# adding repo, installing package, starting service here
postgresql-database-setup:
- postgres_user.present:
- name: {{ pillar['pg_db_user'] }}
- password: {{ pillar['pg_db_password'] }}
- require:
- service: postgresql
- postgres_database.present:
- name: {{ pillar['pg_db_name'] }}
- encoding: {{ pillar['pg_db_encoding'] }}
- lc_ctype: {{ pillar['pg_db_ctype'] }}
- lc_collate: {{ pillar['pg_db_collate'] }}
- template: {{ pillar['pg_db_template'] }}
- owner: {{ pillar['pg_db_user'] }}
- require:
- postgres_user: postgresql-database-setup
Run Code Online (Sandbox Code Playgroud)
postgres-installation工作完美,但postgres-database-setup让我头疼。运行配置时,Salt 会抛出此错误:
Data failed to compile: …Run Code Online (Sandbox Code Playgroud) 就文档而言,如果想查询可用的执行模块,应使用以下命令:
salt '<minion_name>' sys.list_modules
Run Code Online (Sandbox Code Playgroud)
我的问题是, - 是否可以在没有仆从的情况下运行上述内容?
(例如salt sys.list_modules,它不是更干净吗?)
我不记得我是如何在我的mac上安装saltstack的,所以我尝试尽可能地卸载它.我试过brew uninstall saltstack,pip uninstall salt.我试图看看是否salt -h有任何要说的卸载它,但它没有用.
更新一些系统输出
? pip list | grep salt
? whereis salt-call
? which salt-call
/opt/salt/bin/salt-call
? ls -l /opt/salt
total 0
drwxr-xr-x 45 root wheel 1.5K 24 Aug 13:07 bin/
drwxr-xr-x 8 root wheel 272B 24 Aug 13:07 include/
drwxr-xr-x 14 root wheel 476B 24 Aug 13:07 lib/
drwxr-xr-x 8 root wheel 272B 24 Aug 13:07 openssl/
drwxr-xr-x 3 root wheel 102B 24 Aug 13:07 share/
我猜我从这个链接 …
我正在寻找一种方法来找到如何使用 python api 调用 salt-run 以在 salt master 中列出。试图寻找方法但没有帮助!我想使用 python api 运行这个命令salt-run queue.insert myqueue myitem
我需要使用SaltStack在Linux中更改文件权限.
对于目录我可以使用file.directory函数,例如:
file.directory:
- user: root
- group: root
- mode: 400
Run Code Online (Sandbox Code Playgroud)
但是我应该将什么用于文件?
我可以用:
file.managed:
- user: root
- group: root
- mode: 444
Run Code Online (Sandbox Code Playgroud)
它有效,但我有一条警告信息:
[警告]文件状态:/boot/grub/grub.cfg - 既没有定义'source'也没有'contents','contents_pillar'和'contents_grains',但'replace'被设置为'True'.由于没有替换文件的源,'replace'已设置为'False'以避免不必要地读取文件.
它需要一个source指令,但我不想将文件下载到minion,我只需要更改文件权限.
file.exists功能不具备user,group和mode指令.
我有什么选择?
有人可以给我一个白痴解释以下是如何工作的:
{% for server, addrs in salt['mine.get']('roles:web', 'network.ip_addrs', expr_form='grain') | dictsort() %}
server {{ server }} {{ addrs[0] }}:80 check
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
支柱文件如下所示:
mine_functions:
network.ip_addrs: [eth0]
Run Code Online (Sandbox Code Playgroud)
盐分配给前两个值是什么,server以及addrs?你会如何在上面使用多个地雷选项?即,如果您的 pillar 文件有一个额外的 mine 功能,如下所示:
mine_functions:
network.ip_addrs: [eth0]
role:
- mine_function: grains.get
- role
Run Code Online (Sandbox Code Playgroud)
那么如何访问第一个代码片段中的角色函数?
希望这是有道理的
有没有办法应用单个状态文件?我很想在本地做一个salt-call并应用一个文件,相当于puppet-apply /tmp/some-manifest.pp
我非常想将它保存在单个文件中,而不是更改盐根或路径等。