嗨ServerFault社区, 我正在学习SaltStack,现在我正面临一个问题。 我有一个属性文件(propertyfile.properties),其值由盐柱填充。 现在这个属性文件存在于多个目录中。 我的问题是,我希望属性文件的值由salt pillar.get函数根据目前它所在的目录填充/呈现。 给你更多的想法,让我们考虑这个例子: propertyfile.property (in directory 1) name={{ salt['pillar.get']['dir1.name'] }} propertyfile.property (in directory 2) name={{ salt['pillar.get']['dir2.name'] }} #pillar dir1.name=dir1 dir2.name=dir2 注意这个属性文件只有一个,并且通过循环来生成salt到多个目录,如下所示: {% for dir in 'dir1', 'dir2' %} propertyfile_properties_{{ dir }}: file.managed: – name: /home/devuser/{{ dir }}/propertyfile.properties – source: {{ propertyfile_source }} – source_hash: {{ propertyfile_source }}.MD5 – template: jinja – […]
我有两台服务器运行相同的应用程序,需要访问运行MySQL的特定数据库服务器上的数据库。 包含应用程序的两台服务器都应该使用相同的用户凭据访问MySQL数据库。 同时,不应该使用主机通配符(例如%)创buildMySQL用户,而是使用两个服务器的IP。 通常这意味着我创build了两个MySQL用户: 用户:坦率地说,通过:topsecret,主机:10.10.0.1 用户:坦率地说,通过:topsecret,主机:10.10.0.2 现在,我怎样才能用MySQL的盐状态呢? 我想我想要这样的东西: frank: mysql_user.present: – host: 10.0.0.1 – host: 10.0.0.2 – password: topsecret mysql_grants.present: – grant: select – database: secretdb – user: frank – host: 10.0.0.1 – host: 10.0.0.2 由于主机被多次声明,这是行不通的。 同时创build用户“坦率”两次不起作用,因为盐会抱怨一个非唯一的用户名。 我试图通过支柱解决这个问题,但是在这里Salt也抱怨同一用户名的多个定义。 任何想法如何解决这个问题?
示例来自: https : //docs.saltstack.com/en/latest/topics/tutorials/states_pt2.html /etc/httpd/extra/httpd-vhosts.conf: file.managed: – source: salt://webserver/httpd-vhosts.conf apache: pkg.installed: [] service.running: – watch: – file: /etc/httpd/extra/httpd-vhosts.conf – require: – pkg: apache 有没有办法注入“手表”? 我在可选模块中pipe理apache文件。 service.running已经在所有主机上安装的主要部分。 如果可选模块被更改,我怎么能告诉Apache重新启动? 我想在我的盐文件严格分离:主要部分不知道可选模块。 我希望你能理解我。 如果没有,请留下评论。 谢谢。
我有一个Salt脚本,除其他外,初始化一个Postgres数据库。 在初始化数据库之后,我想从文件中读取一些属性,并为每个键/值对执行INSERT (在configuration表中)。 我见过Salt的psql_query ,它应该解决部分问题。 我的问题是,如何迭代我的属性文件中的对,然后对每个条目进行查询? 所以,文件 key1 = value1 key2 = other value 应该翻译成盐 my_config_key1: – postgres.psql_query: query: UPDATE configuration SET value = 'value1' WHERE key = 'key1'; my_config_key2: – postgres.psql_query: query: UPDATE configuration SET value = 'other value' WHERE key = 'key2'; 如果有一个比传递键/值的属性文件更好的方法,那也可以。
默认情况下,Saltstack在安装时使用端口4505和4506来连接Minions。 但是我无法打开Salt主服务器上的端口4505和4506。 有没有什么办法可以configurationNginx背后的Salt master,并且有通过Nginx连接master的爪牙。 非常感谢。
我正在跟着这个DigitalOcean教程 ,介绍Salt Cloud如何工作,以及两个应用程序服务器和一个反向代理。 最后的预期结果是,您应该在反向代理背后的两台机器上运行一个纯JS应用程序,告诉您应用程序的IP地址,这将显示这两个应用程序服务器正在运行并被代理。 不过,我只能得到Nginx的欢迎页面。 下面是nginxconfiguration文件,首先是模板,然后是生成的: 模板 ### /srv/salt/nginx/files/awesome-app.conf.jin ### ################################################## ### Configuration file for Nginx to act as a ### reverse proxy for an app farm. # Define the app servers that we're in front of. upstream awesome-app { {% for server, addrs in salt['mine.get']('roles:appserver', 'network.ip_addrs', expr_form='grain').items() %} server {{ addrs[0] }}:1337; {% endfor […]
我想通过SaltStack把用户postgres的$ HOME从/var/lib到/home 。 以下是发生之前的步骤: postgres RPM被安装 $ HOME是/ var / lib 数据库被初始化 在这种情况下,一个必要的方法(告诉工具做X)比声明性的方式(告诉工具,你想要的结果看起来像X)更容易。 至less这对我来说会更容易些,但是我猜SaltStack有一个隐藏的function,我到目前为止还不知道。 有一个状态user.present,但我想它不会将主目录从一个位置移动到下一个。
salt-master: 2016.11.5 (Carbon) salt-api: 2016.11.5 (Carbon) salt-minion 2016.11.5 (Carbon) cherrypy: 10.2.2 在使用本教程设置salt-api后,我已经能够通过curl成功使用API。 例如,我可以移动文件。 然而,只要有一些命令实际上出现在仆从身上,盐api似乎就会返回{"success": true} 。 有没有办法从发送给minion的指令中获得任何输出(例如,只要是有用的数据,就可以使用json或其他格式)? 例如,当我尝试移动文件时,如果该文件不存在,salt-api只是默默地失败,并返回{"success": true} 。 有没有办法让输出告诉我实际的指令是否通过或失败? 我能够findsalt.output.json_out ,这似乎只改变{"success": true}的输出为另一种格式….这对我没有用。 是否有一些我没有发现的文档可以帮助我返回除“ {"success": true} ? 编辑 为了澄清,我的最终目标是在C#中有一个可以调用salt-api的程序,并且不pipe这个命令是否成功,它都会返回。 我从salt-master -l debug的输出中知道存在一个具有实际布尔值的retcode ,但我不知道如何达到它。
假如我有一个盐师傅,并决定在我的所有奴才中执行一些武断的命令。 但因为晚上不好,上class途中被抢劫,老板嚷嚷我迟到了,我的同事们决定用针和针刺我这个讨厌的笑话,而不是做一个无害的事情: salt '*' cmd.run "rm -rf /var/tmp/some/directory/with/redundant/data" 出来的是: salt '*' cmd.run "rm -rf /" 灾害! 有什么办法,我可以“黑名单”某些命令,使他们不能使用cmd.run执行? 提前致谢。
最终,我试图在没有互联网连接的超级计算机上安装SaltStack。 而且我不能把它挂到互联网上。 到目前为止,我已经在服务器和CPAN上安装了一个完整的yum repo。 但百胜回购找不到SaltStack(我不知道为什么,但我打算今晚做我yum回购的另一个rsync并在服务器上更新它…这说,这个回购只有3个月大) ,所以我采取了尝试在这台服务器上安装点,但百胜也找不到点或python。 所以,现在,我必须弄清楚如何从源代码安装pip,如果有一个通用的python模块的大目录,我可以rsync,只是扔在这台服务器上。