---
user_message: |
  You will need to update SNOW credentials with your SNOW instance details if you plan to demo this.

controller_components:
  - projects
  - credential_types
  - credentials
  - job_templates
  #- workflow_job_templates

controller_projects:
  - name: Fact Scan
    organization: Default
    scm_type: git
    scm_url: 'https://github.com/ansible/awx-facts-playbooks.git'

controller_credential_types:
  - name: "SNOW Credential Type"
    description: "credential to store SNOW"
    kind: cloud
    inputs:
      fields:
        - id: SNOW_USERNAME
          type: string
          label: Service Now Username
        - id: SNOW_INSTANCE
          type: string
          label: Service Now Instance Name (devXXXXX)
        - id: SNOW_PASSWORD
          type: string
          label: Service Now Password
          secret: true
      required:
        - SNOW_USERNAME
        - SNOW_INSTANCE
        - SNOW_PASSWORD
    injectors:
      extra_vars:
        snow_username: "{% raw %}{  { SNOW_USERNAME  }}{% endraw %}"
        snow_password: "{% raw %}{  { SNOW_PASSWORD  }}{% endraw %}"
        snow_instance: "{% raw %}{  { SNOW_INSTANCE  }}{% endraw %}"

controller_credentials:
- name: SNOW Credential
  description: Credentials
  organization: Default
  credential_type: "SNOW Credential Type"
  inputs:
    SNOW_USERNAME: "admin" #update after install
    SNOW_PASSWORD: "XXX"   #update after install
    SNOW_INSTANCE: "devXxxxx" #update after install

controller_templates:
  - name: "WINDOWS / Install IIS"
    job_type: run
    inventory: "Workshop Inventory"
    project: "Ansible official demo project"
    playbook: "windows/install_iis.yml"
    execution_environment: Default execution environment
    credentials:
    - "Workshop Credential"
    survey_enabled: true
    survey:
      name: ''
      description: ''
      spec:
        - question_name: Server Name or Pattern
          type: text
          variable: HOSTS
          required: false
        - question_name: web content
          type: text
          variable: iis_message
          required: true

  - name: "WINDOWS / Patching"
    use_fact_cache: true
    job_type: check
    ask_job_type_on_launch: yes
    inventory: "Workshop Inventory"
    project: "Ansible official demo project"
    playbook: "windows/patching.yml"
    execution_environment: Default execution environment
    credentials:
    - "Workshop Credential"
    survey_enabled: true
    survey:
      name: ''
      description: ''
      spec:
        - question_name: Server Name or Pattern
          type: text
          variable: HOSTS
          required: false
        - question_name: Update categories
          type: multiselect
          variable: win_update_categories
          required: false
          default: SecurityUpdates
          choices:
            - Application
            - Connectors
            - CriticalUpdates
            - DefinitionUpdates
            - DeveloperKits
            - FeaturePacks Guidance
            - SecurityUpdates
            - ServicePacks
            - Tools
            - UpdateRollups
            - Updates
        - question_name: Reboot after install?
          type: multiplechoice
          variable: allow_reboot
          required: false
          default: 'Yes'
          choices:
            - 'Yes'
            - 'No'

  - name: "WINDOWS / Chocolatey install multiple"
    job_type: run
    inventory: "Workshop Inventory"
    project: "Ansible official demo project"
    playbook: "windows/windows_choco_multiple.yml"
    execution_environment: Default execution environment
    credentials:
    - "Workshop Credential"
    survey_enabled: true
    survey:
      name: ''
      description: ''
      spec:
        - question_name: Server Name or Pattern
          type: text
          variable: HOSTS
          required: false

  - name: "WINDOWS / Chocolatey install specific"
    job_type: run
    inventory: "Workshop Inventory"
    project: "Ansible official demo project"
    playbook: "windows/windows_choco_specific.yml"
    execution_environment: Default execution environment
    credentials:
    - "Workshop Credential"
    survey_enabled: true
    survey:
      name: ''
      description: ''
      spec:
        - question_name: Server Name or Pattern
          type: text
          variable: HOSTS
          required: false
        - question_name: Package name
          type: text
          variable: package_name
          required: true
  - name: "WINDOWS / Arbitrary PowerShell"
    job_type: run
    inventory: "Workshop Inventory"
    project: "Ansible official demo project"
    playbook: "windows/arbitrary_powershell.yml"
    execution_environment: Default execution environment
    credentials:
    - "Workshop Credential"
    survey_enabled: true
    survey:
      name: ''
      description: ''
      spec:
        - question_name: Server Name or Pattern
          type: text
          variable: HOSTS
          required: false
        - question_name: PowerShell Script (Default returns random cat fact)
          type: textarea
          variable: ps_script
          default: "(Invoke-RestMethod -Method 'GET' -Uri 'https://catfact.ninja/fact').fact"
          required: true

  - name: "WINDOWS / PowerShell Script"
    job_type: run
    inventory: "Workshop Inventory"
    project: "Ansible official demo project"
    playbook: "windows/powershell_script.yml"
    execution_environment: Default execution environment
    credentials:
    - "Workshop Credential"
    survey_enabled: true
    survey:
      name: ''
      description: ''
      spec:
        - question_name: Server Name or Pattern
          type: text
          variable: HOSTS
          required: false
        - question_name: Service state to query?
          type: multiplechoice
          variable: service_state
          required: false
          default: 'Running'
          choices:
            - 'Running'
            - 'Stopped'

  - name: "WINDOWS / PowerShell DSC configuring password requirements"
    job_type: run
    inventory: "Workshop Inventory"
    project: "Ansible official demo project"
    playbook: "windows/powershell_dsc.yml"
    execution_environment: Default execution environment
    credentials:
    - "Workshop Credential"
    survey_enabled: true
    survey:
      name: ''
      description: ''
      spec:
        - question_name: Server Name or Pattern
          type: text
          variable: HOSTS
          required: false

  - name: "ACTIVE DIRECTORY / Create Active Directory domain"
    job_type: run
    inventory: "Workshop Inventory"
    project: "Ansible official demo project"
    playbook: "windows/active_directory/create_ad_domain.yml"
    execution_environment: Default execution environment
    credentials:
    - "Workshop Credential"
    survey_enabled: true
    survey:
      name: ''
      description: ''
      spec:
        - question_name: Server Name or Pattern
          type: text
          variable: HOSTS
          required: false

  - name: "ACTIVE DIRECTORY / Helpdesk new user portal"
    job_type: run
    inventory: "Workshop Inventory"
    project: "Ansible official demo project"
    playbook: "windows/active_directory/helpdesk_new_user_portal.yml"
    execution_environment: Default execution environment
    credentials:
    - "Workshop Credential"
    survey_enabled: true
    survey:
      name: ''
      description: ''
      spec:
        - question_name: Firstname
          type: text
          variable: firstname
          required: true
        - question_name: Surname
          type: text
          variable: surname
          required: true
        - question_name: Street
          type: text
          variable: street
          default: 123 4th St.
          required: false
        - question_name: City
          type: text
          variable: city
          default: Sometown
          required: false
        - question_name: Postal code
          type: text
          variable: postal_code
          default: IN
          required: false
        - question_name: Telephone number
          type: text
          variable: telephone_number
          default: 555-123456
          required: false

  - name: "Rollback"
    job_type: run
    inventory: "Workshop Inventory"
    limit: "student1-win1"
    project: "Ansible official demo project"
    playbook: "windows/backup.yml"
    execution_environment: "windows workshop execution environment"
    credentials:
    - "Workshop Credential"

  - name: "Open SNOW Change Request"
    job_type: run
    inventory: "Workshop Inventory"
    limit: "student1-ansible-1"
    project: "Ansible official demo project"
    playbook: "windows/snow.yml"
    credentials:
    - "SNOW Credential"
    - "Workshop Credential"

  - name: "Send Completion Notification"
    job_type: run
    inventory: "Workshop Inventory"
    limit: "student1-win1"
    project: "Ansible official demo project"
    playbook: "windows/backup.yml"
    execution_environment: "windows workshop execution environment"
    credentials:
    - "Workshop Credential"

  - name: "Alert Ops!"
    job_type: run
    inventory: "Workshop Inventory"
    limit: "student1-win1"
    project: "Ansible official demo project"
    playbook: "windows/backup.yml"
    execution_environment: "windows workshop execution environment"
    credentials:
    - "Workshop Credential"

controller_workflows:
  - name: "Windows Demo Workflow"
    organization:
      name: "Default"
    workflow_nodes:
      - unified_job_template:
          name: "Ansible official demo project"
          type: project_update
          organization:
            name: "Default"
        identifier: node100
        related:
          success_nodes:
          - identifier: node101
      - unified_job_template:
          name: "Open SNOW Change Request"
          type: job_template
          organization:
            name: "Default"
        identifier: node101
        related:
          success_nodes:
          - identifier: node201
      - unified_job_template:
          name: "WINDOWS / Windows updates"
          type: job_template
          organization:
            name: "Default"
        identifier: node201
        related:
          success_nodes:
          - identifier: node301
          failure_nodes:
          - identifier: node302
          always_nodes: []
      - unified_job_template:
          name: "WINDOWS / Install IIS"
          type: job_template
          organization:
            name: "Default"
        identifier: node301
        related:
          success_nodes:
            - identifier: node401
          failure_nodes:
            - identifier: node402
          always_nodes: []
      - unified_job_template:
          name: "Rollback"
          type: workflow_approval
          organization:
            name: "Default"
        related:
          success_nodes: []
          failure_nodes: []
          always_nodes: []
        identifier: node302
      - unified_job_template:
          name: "WINDOWS / Chocolatey install multiple"
          type: workflow_approval
          organization:
            name: "Default"
        identifier: node401
        related:
          success_nodes:
            - identifier: node501
          failure_nodes:
            - identifier: node502
          always_nodes: []
      - unified_job_template:
          name: "Rollback"
          type: job_template
          organization:
            name: "Default"
        identifier: node402
        related:
          success_nodes: []
          failure_nodes: []
          always_nodes: []
      - unified_job_template:
          name: "Send Completion Notification"
          type: job_template
          organization:
            name: "Default"
        identifier: node501
        related:
          success_nodes: []
          failure_nodes: []
          always_nodes: []
      - unified_job_template:
          name: "Manual override"
          type: workflow_approval
          organization:
            name: "Default"
        related:
          success_nodes:
            - identifier: node601
          failure_nodes:
            - identifier: node602
          always_nodes: []
        identifier: node502
      - unified_job_template:
          name: "Rollback"
          type: job_template
          organization:
            name: "Default"
        identifier: node602
        related:
          success_nodes: []
          failure_nodes: []
          always_nodes: []
      - unified_job_template:
          name: "Alert Ops!"
          type: job_template
          organization:
            name: "Default"
        identifier: node601
        related:
          success_nodes: []
          failure_nodes: []
          always_nodes: []
