首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法通过Ansible作为Jinja模板部署云格式

无法通过Ansible作为Jinja模板部署云格式
EN

Stack Overflow用户
提问于 2020-07-20 17:07:55
回答 1查看 222关注 0票数 0

我的角色,main.yml如下所示

代码语言:javascript
复制
cat ansible/playbooks/roles/patching-cf-ssm/tasks/main.yml
---
- include_vars: "{{playbook_dir}}/vars/patching-config.yml"
  ignore_errors: yes

- name: Create a Cloudformation Stack Windows
  cloudformation:
    stack_name: "something pleasant-static"
    state: "present"
    region: "{{ AWS_REGION }}"
    disable_rollback: true
    template_body: "{{ lookup('template', '../../cloudformation/patching/PatchBaseline.yaml.j2') }}"
  #when: OStype == "WINDOWS"
  with_items: "{{ my_os_baseline }}"

我的修补配置文件如下

代码语言:javascript
复制
[ansible@ip-172-31-40-59 awsManagedServiceInstance]$ cat ansible/playbooks/vars/patching-config.yml
---
AWS_REGION: ap-southeast-2
my_os_baseline:
  - OS: "WINDOWS"
    PatchGroup:
      - "WinProdLastFri09PM01"
      - "WinProdLastSat09PM01"
      - "WinNonProdDayOne09PM01"
      - "WinNonProdDayTwo09PM01"
    ApproveAfterDays: 7
    SEVERITY: "MSRC_SEVERITY"
    ComplianceLevel: "CRITICAL"
    CLASSIFICATION_Values: |
      - SecurityUpdates
      - Updates
      - ServicePacks
      - UpdateRollups
      - CriticalUpdates
      - DefinitionUpdates
      - Drivers
      - FeaturePacks
      - Tools
      - UpdateRollups
      - Updates
      - Upgrades
    PatchFilters_Values: |
      - Critical
      - Important

  - OS: "REDHAT_ENTERPRISE_LINUX"
    PatchGroup:
      - "RHELProdLastFri09PM01"
      - "RHELProdLastSat09PM01"
      - "RHELNonProdDayOne09PM01"
      - "RHELNonProdDayTwo09PM01"
    ApproveAfterDays: 7
    ComplianceLevel: "CRITICAL"
    SEVERITY: "SEVERITY"
    CLASSIFICATION_Values: |
      - Security
      - Bugfix
      - Enhancement
      - Recommended
      - Newpackage
    PatchFilters_Values: |
      - Critical
      - Important
      - Moderate

  - OS: "UBUNTU"
    PatchGroup:
      - "UBUNTUProdLastFri09PM01"
      - "UBUNTUProdLastSat09PM01"
      - "UBUNTUNonProdDayOne09PM01"
      - "UBUNTUNonProdDayTwo09PM01"
    ApproveAfterDays: 7
    ComplianceLevel: "CRITICAL"
    SEVERITY: "SEVERITY"
    CLASSIFICATION_Values: |
      - Security
      - Bugfix
      - Enhancement
      - Recommended
      - Newpackage
    PatchFilters_Values: |
      - Critical
      - Important
      - Moderate

  - OS: "CENTOS"
    PatchGroup:
      - "CENTOSProdLastFri09PM01"
      - "CENTOSProdLastSat09PM01"
      - "CENTOSNonProdDayOne09PM01"
      - "CENTOSNonProdDayTwo09PM01"
    ApproveAfterDays: 7
    ComplianceLevel: "CRITICAL"
    SEVERITY: "SEVERITY"
    CLASSIFICATION_Values: |
      - Security
      - Bugfix
      - Enhancement
      - Recommended
      - Newpackage
    PatchFilters_Values: |
      - Critical
      - Important
      - Moderate

  - OS: "AMAZON_LINUX_2"
    PatchGroup:
      - "AMAZON_LINUX_2ProdLastFri09PM01"
      - "AMAZON_LINUX_2ProdLastSat09PM01"
      - "AMAZON_LINUX_2NonProdDayOne09PM01"
      - "AMAZON_LINUX_2NonProdDayTwo09PM01"
    ApproveAfterDays: 7
    ComplianceLevel: "CRITICAL"
    SEVERITY: "SEVERITY"
    CLASSIFICATION_Values: |
      - Security
      - Bugfix
      - Enhancement
      - Recommended
      - Newpackage
    PatchFilters_Values: |
      - Critical
      - Important
      - Moderate

my_windows_maintenance:
  - name: "Create-Patching-Schedule"
    tag_value: "myProdA"
    rebootSetting: "never"
    PatchGroup: "WinProdLastFri09PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 ? * 6L *)"

  - name: "Create-Patching-Schedule"
    tag_value: "myProdB"
    rebootSetting: "never"
    PatchGroup: "WinProdLastSat09PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 ? * 7L *)"

  - name: "Create-Patching-Schedule"
    tag_value: "myWinNonProd"
    rebootSetting: "never"
    PatchGroup: "WinNonProdDayOne09PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 1 * ? *)"

  - name: "Create-Patching-Schedule"
    OS: "WINDOWS"
    tag_value: "myWinNonProdOneTime"
    rebootSetting: "never"
    PatchGroup: "WinNonProdDayTwo09PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 2 * ? *)"

my_linux_maintenance:
  - name: "Create-Patching-Schedule"
    OS: "REDHAT_ENTERPRISE_LINUX"
    tag_value: "myLinuxProdA"
    rebootSetting: "never"
    PatchGroup: "RHELProdLastFri09PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 ? * 6L *)"

  - name: "Create-Patching-Schedule"
    OS: "REDHAT_ENTERPRISE_LINUX"
    tag_value: "myLinuxProdB"
    rebootSetting: "never"
    PatchGroup: "RHELProdLastSat09PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 ? * 7L *)"

  - name: "Create-Patching-Schedule"
    OS: "REDHAT_ENTERPRISE_LINUX"
    tag_value: "myLinuxNonProd"
    rebootSetting: "never"
    PatchGroup: "RHELNonProdDayOne9PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 1 * ? *)"

  - name: "Create-Patching-Schedule"
    OS: "REDHAT_ENTERPRISE_LINUX"
    tag_value: "myLinuxNonProdOneTime"
    rebootSetting: "never"
    PatchGroup: "RHELNonProdDayTwo09PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 2 * ? *)"

  - name: "Create-Patching-Schedule"
    OS: "UBUNTU"
    tag_value: "myLinuxProdA"
    rebootSetting: "never"
    PatchGroup: "UBUNTUProdLastFri09PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 ? * 6L *)"

  - name: "Create-Patching-Schedule"
    OS: "UBUNTU"
    tag_value: "myLinuxProdB"
    rebootSetting: "never"
    PatchGroup: "UBUNTUProdLastSat09PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 ? * 7L *)"

  - name: "Create-Patching-Schedule"
    OS: "UBUNTU"
    tag_value: "myLinuxNonProd"
    rebootSetting: "never"
    PatchGroup: "UBUNTUNonProdDayOne9PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 1 * ? *)"

  - name: "Create-Patching-Schedule"
    OS: "UBUNTU"
    tag_value: "myLinuxNonProdOneTime"
    rebootSetting: "never"
    PatchGroup: "UBUNTUNonProdDayTwo9PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 2 * ? *)"

  - name: "Create-Patching-Schedule"
    OS: "CENTOS"
    tag_value: "myLinuxProdA"
    rebootSetting: "never"
    PatchGroup: "RHELProdLastFri09PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 ? * 6L *)"

  - name: "Create-Patching-Schedule"
    OS: "CENTOS"
    tag_value: "myLinuxProdB"
    rebootSetting: "never"
    PatchGroup: "RHELProdLastSat09PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 ? * 7L *)"

  - name: "Create-Patching-Schedule"
    OS: "CENTOS"
    tag_value: "myLinuxNonProd"
    rebootSetting: "never"
    PatchGroup: "RHELNonProdDayOne9PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 1 * ? *)"

  - name: "Create-Patching-Schedule"
    OS: "CENTOS"
    tag_value: "myLinuxNonProdOneTime"
    rebootSetting: "never"
    PatchGroup: "RHELNonProdDayTwo9PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 2 * ? *)"

  - name: "Create-Patching-Schedule"
    OS: "AMAZON_LINUX_2"
    tag_value: "myLinuxProdA"
    rebootSetting: "never"
    PatchGroup: "RHELProdLastFri09PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 ? * 6L *)"

  - name: "Create-Patching-Schedule"
    OS: "AMAZON_LINUX_2"
    tag_value: "myLinuxProdB"
    rebootSetting: "never"
    PatchGroup: "RHELProdLastSat09PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 ? * 7L *)"

  - name: "Create-Patching-Schedule"
    OS: "AMAZON_LINUX_2"
    tag_value: "myLinuxNonProd"
    rebootSetting: "never"
    PatchGroup: "RHELNonProdDayOne9PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 1 * ? *)"

  - name: "Create-Patching-Schedule"
    OS: "AMAZON_LINUX_2"
    tag_value: "myLinuxNonProdOneTime"
    rebootSetting: "never"
    PatchGroup: "RHELNonProdDayTwo9PM01"
    startDate: "2020-07-01T00:00:00Z"
    expiryDate: "2020-07-31T23:59:59Z"
    duration: 6
    cutoff: 2
    timeZone: "Australia/Sydney"
    schedule: "cron(0 0 21 2 * ? *)"
...

最后,Jinja模板如下:

代码语言:javascript
复制
[ansible@ip-172-31-40-59 awsManagedServiceInstance]$ cat cloudformation/patching/PatchBaseline.yaml.j2
---
Resources:
  WindowsBaseline:
    Type: AWS::SSM::PatchBaseline
    Properties:
      Name: My-Managed-{{item.OS}}-Baseline
      Description: {{item.OS}} Baseline for {{item.SEVERITY}} with Rating {{item.PatchFilters_Values}}
      OperatingSystem: {{ item.OS }}
      PatchGroups:
        - {{ item.PatchGroup | indent( width=7, indentfirst=True ) }}
        # - WinProdLastFri09PM01
        # - WinProdLastSat09PM01
        # - WinNonProdDayOne09PM01
        # - WinNonProdDayTwo09PM01
      ApprovalRules:
        PatchRules:
          - PatchFilterGroup:
              PatchFilters:
                - Values:
                  {{ item.PatchFilters_Values | indent( width=14, indentfirst=True ) }}
                  Key: {{ item.SEVERITY }}
                - Values:
                  {{ item.CLASSIFICATION_Values | indent( width=14, indentfirst=True ) }}
                  Key: CLASSIFICATION
                - Values:
                    - APPLICATION
                  Key: PATCH_SET
            ApproveAfterDays: 7
            ComplianceLevel: CRITICAL

不幸的是,我收到一个错误,如下所示:

代码语言:javascript
复制
fatal: [localhost]: FAILED! => {"msg": "An unhandled exception occurred while running the lookup plugin 'template'. Error was a <type 'exceptions.AttributeError'>, original message: 'list' object has no attribute 'splitlines'"}

根本不知道这意味着什么,也不知道如何解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-21 03:35:10

- {{ item.PatchGroup | indent( width=7, indentfirst=True ) }}

您正在将一个list发送到一个函数中,该函数需要用换行符分隔的字符串

你可以轻松地再现爆炸:

代码语言:javascript
复制
- debug:
    msg: '{{ ["alpha", "beta"] | indent( width=7, indentfirst=True ) }}'

同样微不足道的是,修正是join那个list

代码语言:javascript
复制
- debug:
    msg: '{{ ["alpha", "beta"] | join("\n") | indent( width=7, indentfirst=True ) }}'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63000499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档