将 jinja 变量从 salt pillar 传递给脚本

将 jinja 变量从 salt pillar 传递给脚本

使用 salt 进行配置,我希望能够运行 cmd.script。如果我在脚本中列出我打算安装的所有包,该脚本就会起作用。但我更喜欢在 salt 公式中列出包列表,并从脚本中引用它。下面可以正常工作。

盐配方

Run masterscript:
  cmd.script:
    - name: masterscript
    - source: http://server/r-install.sh

r-安装.sh

IFS=","
packages="'devtools','shiny','rmarkdown','plyr','shinydashboard','googleVis','RPostgreSQL','reshape2','xtable','DT','lattice','latticeExtra','ggplot2','formattable','plotly','htmlwidgets','shinyBS','stringr','DBI'"
for i in $packages; do su - -c "R -e \"install.packages($i, repos='http://cran.rstudio.com')\""; done

我更愿意列出支柱中的软件包,即:

r:
  packages:
     - package1
     - package2

答案1

盐公式:

Run masterscript:
  cmd.script:
    - name: masterscript
    - source: http://server/r-install.sh
    - template: jinja

r-安装.sh:

{%- for package in salt['pillar.get']('r:packages', []) %}
su - -c "R -e \"install.packages({{package}}, repos='http://cran.rstudio.com')\""
{% endfor -%}

相关内容