Ansible:包含管道的多行变量

时间:2017-10-17 10:42:33

标签: ansible ascii-art

我尝试在Linux服务器上创建一个Ansible角色来创建MOTD(当天的消息)。

我想在此文件中添加ASCII art,ASCII art在我的模板中使用的变量中定义。

所以我的ASCII艺术变量需要是多行的,并且包含多个特殊字符。

我试试:

motd_asciiart: |
     _____ _             _                        __ _               
    /  ___| |           | |                      / _| |              
    \ `--.| |_ __ _  ___| | _______   _____ _ __| |_| | _____      __
     `--. \ __/ _` |/ __| |/ / _ \ \ / / _ \ '__|  _| |/ _ \ \ /\ / /
    /\__/ / || (_| | (__|   < (_) \ V /  __/ |  | | | | (_) \ V  V / 
    \____/ \__\__,_|\___|_|\_\___/ \_/ \___|_|  |_| |_|\___/ \_/\_/ 

但我有这个错误:

  

ERROR!加载YAML时出现语法错误。

     

错误似乎出现在'/Users/ydavid/Devops/ansible2/roles/umanit.motd/defaults/main.yml'中:第3行第9列,但可能   取决于确切的语法问题,在文件的其他位置。

     

违规行似乎是:

     _____ _             _                        __ _
    /  ___| |           | |                      / _| |
    ^ here

我尝试添加“在第一行和最后一行,我有一个不同的错误:

  

ERROR!加载YAML时出现语法错误。

     

错误似乎出现在'/Users/ydavid/Devops/ansible2/roles/umanit.motd/defaults/main.yml'中:第7行第74列,但可能   取决于确切的语法问题,在文件的其他位置。

     

违规行似乎是:

    /\__/ / || (_| | (__|   < (_) \ V /  __/ |  | | | | (_) \ V  V /
    \____/ \__\__,_|\___|_|\_\___/ \_/ \___|_|  |_| |_|\___/ \_/\_/ "
                                                                    ^ here

你能帮助我吗?

我们可以逃离整个街区吗?

我发现这个角色(https://github.com/picotrading/ansible-motd)做了同样的事情,但ASCII艺术是一线的,如果可以,我会避免这种情况。

1 个答案:

答案 0 :(得分:1)

原因是缩进 - 第二行比第一行早一个空格开始,这是一个参考点。

我想最干净的解决方案是将艺术品保存到单独的文件中并使用file_contents lookup plugin阅读内容:

vars:
  motd_asciiart: "{{lookup('file', './art.txt')}}"