Class: ForemanAnsibleDirector::Generators::PlaybookGenerator

Inherits:
Object
  • Object
show all
Defined in:
app/lib/foreman_ansible_director/generators/playbook_generator.rb

Class Method Summary collapse

Class Method Details

.generate(host) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'app/lib/foreman_ansible_director/generators/playbook_generator.rb', line 7

def generate(host)
  host_content = host.ansible_content_assignments
  tasks = []

  host_content.each do |content_assignment|
    next unless content_assignment.consumable.is_a? ::ForemanAnsibleDirector::AnsibleCollectionRole

    collection_role = content_assignment.consumable
    collection_version = collection_role.ansible_collection_version
    collection = collection_version.versionable

    fqcn = "#{collection.namespace}.#{collection.name}.#{collection_role.name}"

    load_vars_block = {
      name: "Load variables for #{collection.namespace}.#{collection.name}.#{collection_role.name}",
      "ansible.builtin.include_vars": {
        file: "#{fqcn}_vars.yaml",
      },
    }
    # debug_block = {
    #  name: 'Display all variables for host',
    #  debug: {
    #    var: 'hostvars[inventory_hostname]',
    #  },
    # }
    load_role_block = {
      name: "Run role #{collection.namespace}.#{collection.name}.#{collection_role.name}",
      "ansible.builtin.include_role": {
        name: fqcn,
      },
    }

    tasks << load_vars_block
    # tasks << debug_block
    tasks << load_role_block

    # else # content_assignment.consumable.is_a? AnsibleRole
  end

  [{

    name: 'Playbook',
    hosts: 'all',
    gather_facts: true,
    tasks: tasks,

  }]
end