STARTcloud / hcl_domino_standalone_provisioner

This spins up a Standalone Domino Instance, with additional HCL services like Traveler, NomadWeb, etc
Apache License 2.0
1 stars 0 forks source link

Update Hosts.template.yml.j2 Template for v0.1.22 Role Names #3

Open JoelProminic opened 4 months ago

JoelProminic commented 4 months ago

While working on this issue we noticed that Hosts.template.yml.j2 is not updated with the changes for 0.1.22. For example, the role names are not updated.

The current plan is:

  1. Update and test this file on the SHI side
  2. Copy Hosts.template.yml.j2 back to this repository after we have done testing.
  3. Do a 0.1.23 release with the updated template (and other recent changes).
  4. Update SHI with 0.1.23 - Ideally this step will be trivial once we are clear on how to use the template
  5. Going forward we would make updates to this template as we change the provisioners
piotrzarzycki21 commented 2 months ago

Here is how looks like Hosts.yml file in server with following configuration:

Screenshot 2024-04-19 at 13 48 16

Hosts.yml:

#jinja2:lstrip_blocks: True
# core_provisioner_version: {{ core_provisioner_version }}
# provisioner_name: {{ provisioner_name }}
# provisioner_version: {{ provisioner_version }}
---
hosts:
  -
    settings:
      hostname: test # demo
      domain: startcloud.com # startcloud.com
      server_id: '9366' # Auto-generated
      vcpus: 2 # 2
      memory: 8G # 8G

      box: 'STARTcloud/debian12-server'
      box_version: 0.0.4
      os_type: 'Debian_64'
      provider-type: virtualbox
      firmware_type: UEFI
      consoleport: 9366 # Auto-generated
      consolehost: 0.0.0.0
      setup_wait: 300
      vagrant_user_private_key_path: ./core/ssh_keys/id_rsa
      vagrant_user: startcloud
      vagrant_user_pass: 'STARTcloud22@!'
      vagrant_insert_key: true
      ssh_forward_agent: true

    networks:
      - type: external
        address: 192.168.2.1 # 192.168.2.15, This is ignored when dhcp4 is set to true, Provide user option
        netmask: 255.255.255.0 # 255.255.255.0, This is ignored when dhcp4 is set to true, Provide user option
        gateway:  # 192.168.2.1, This is ignored when dhcp4 is set to true, Provide user option
        dhcp4: true # true, Provide user option in case they want static ip
        dhcp6: false # false
        bridge:  # Blank, Provide user option
        mac: auto
        dns:
          - nameserver: 1.1.1.1 # 9.9.9.9
          - nameserver: 1.0.0.1 # 149.112.112.112

    #disks:
    #  boot:
    #    size: null
    #  additional_disks:
    #    - volume_name: disk1
    #      size: null
    #      port: 5

    # Moved to Hosts.rb, Here to document how to override, will be removed in future version once documented in README
    #vbox:
    #  directives:
    #    - directive: vrde
    #      value: 'on'

    provisioning:
      ansible.builtin.shell:
        enabled: false
        scripts:
          - './scripts/aliases.sh'

      ansible:
        enabled: true
        scripts:
          - local:
              - script: ansible/generate-playbook.yml
                ansible_python_interpreter: /usr/bin/python3
                compatibility_mode: 2.0
                install_mode: pip
                ssh_pipelining: true
                verbose: false
              - script: ansible/playbook.yml
                ansible_python_interpreter: /usr/bin/python3
                compatibility_mode: 2.0
                install_mode: pip
                ssh_pipelining: true
                verbose: false

    folders:
      - map: .
        to: /vagrant
        type: virtualbox
        disabled: true
        automount: true
        description: "Disable VBoxSF"
      - map: ./provisioners/ansible/
        to: /vagrant/ansible/
        type: rsync
        args:
          - '--verbose'
          - '--archive'
          - '--delete'
          - '-z'
          - '--copy-links'
      - map: ./installers/
        to: /vagrant/installers/
        type: rsync
      - map: ./ssls/
        to: /secure/
        type: rsync
      - map: ./safe-id-to-cross-certify/
        to: /safe-id-to-cross-certify/
        type: rsync

    vars:
      ## You can set global role variables here, look in the defaults folders for hints as to variables used by roles
      # Domino Configuration Variables
      domino_organization: startcloud #STARTcloud
      safe_notes_id: safe.ids # SAFE.ids
      domino_admin_notes_id_password: "password"
      domino_server_clustermates: 0 # 0

      # Additional server options
      is_additional_server: false #false
      #use_existing_server_id: null false
      #existing_server_id: null "demo1.id"
      #existing_server: null "demo0.startcloud.com"
      #existing_server_ip: null "192.168.2.227"

      ## When using the default: demo.startcloud.com as the hostname and domain, we use the default-signed.crt certificates to provide a valid SSL
      ## If the hostname and domain, ie demo.startcloud.com do not match the certificate we provide (ie demo.startcloud.com in default-signed.crt), some services may not start (ie nomadweb)
      ## If a user does not mind using a self signed certificate for their development testing for their own domain  or are unable to replace the default-signed.crt files
      ## they would set the below value to true so that the vm creates a SSL crt with the valid hostname, so that when the service compares the hostname it is to listen on and
      ## the hostname the certificate is signed for it matches.
      haproxy_ssl_redirect: true
      selfsigned_enabled: true # false
      debug_all: true

      # Genesis Variables
      genesis_packages:
        - netmonitor
        - SuperHumanPortal

      # Domino Installer Variables
      #domino_hash: null # "4153dfbb571b1284ac424824aa0e25e4"
      domino_server_installer_tar: Domino_12.0.2_Linux_English.tar
      domino_major_version: 12 # "12"
      domino_minor_version: 2 # "0"
      domino_patch_version: 2 # "2"

      # Domino fixpack Variables
      #domino_fp_hash: null # "124153dfbb571b1284ac4248"
      #domino_server_installer_tar: Domino_12.0.2_Linux_English.tar # "Domino_12.0.2_Linux_English.tar"
      domino_installer_fixpack_install: true # false
      domino_fixpack_version: FP2 # FP1
      domino_server_fixpack_tar: Domino_1202FP2_Linux.tar # "Domino_1201FP1_Linux.tar"

      # Domino Hotfix Variables
      #domino_hf_hash: null # "14153dfbb571b1284ac42482"
      domino_installer_hotfix_install: false # false
      domino_hotfix_version:  # HF50
      domino_server_hotfix_tar:  # "1201HF50-linux64.tar"

      # Leap Variables
      #leap_hash: null # "080235c0f0cce7cc3446e01ffccf0046"
      leap_installed_check: true
      leap_archive: Leap-1.0.5.zip # Leap-1.0.5.zip
      leap_version: 1.0.5 # 1.0.5

      # Nomad Web Variables
      #nomadweb_hash: null # "044c7a71598f41cd3ddb88c5b4c9b403"
      nomadweb_archive: nomad-server-1.0.10-for-domino-12.0.2-linux.tgz # nomad-server-1.0.8-for-domino-1202-linux.tgz
      nomadweb_version: 1.0.10 # 1.0.8

      # Traveler Variables
      #traveler_hash: null # "4a195e3282536de175a2979def40527d"
      traveler_archive: Traveler_12.0.2FP1_Linux_ML.tar.gz # Traveler_12.0.2_Linux_ML.tar.gz
      traveler_base_version: 12.0.2 # base
      traveler_fixpack_archive:  # Future
      traveler_fixpack_version:  # Future

      # Verse Variables
      #verse_hash: null # "dfad6854171e964427550454c5f006ee"
      verse_archive: HCL_Verse_3.0.0.zip # HCL_Verse_3.0.0.zip
      verse_base_version: 3.0.0 # 3.0.0

      # AppDev Web Pack Variables
      #appdevpack_hash: null # "b84248ae22a57efe19dac360bd2aafc2"
      appdevpack_archive: domino-appdev-pack-1.0.15.tgz # domino-appdev-pack-1.0.15.tgz
      appdevpack_version: 1.0.15 # 1.0.15

      # Domino Rest API Variables
      #domino_rest_api_hash: null # "fa990f9bac800726f917cd0ca857f220"
      domino_rest_api_version: 1.0.0 # 1
      domino_rest_api_archive: Domino_REST_API_V1_Installer.tar.gz # Domino_REST_API_V1_Installer.tar.gz

    roles:
      - name: startcloud_setup
      - name: startcloud_networking
      - name: startcloud_hostname
      - name: startcloud_dependencies
      - name: startcloud_service_user
      - name: startcloud_sdkman_install
      - name: startcloud_sdkman_java
      - name: startcloud_sdkman_maven
      - name: startcloud_sdkman_gradle
      - name: startcloud_ssl
      - name: hcl_domino_reset
      - name: hcl_domino_install
      - name: hcl_domino_vagrant_rest_api
      - name: hcl_domino_service_nash
      - name: hcl_domino_java_config
      - name: hcl_domino_java_tools
      - name: hcl_domino_updatesite
      - name: hcl_domino_config
      - name: hcl_domino_genesis
      - name: hcl_domino_genesis_applications
      - name: hcl_domino_cross_certify
     # - name: hcl_domino_leap
     # - name: hcl_domino_nomadweb
     # - name: hcl_domino_traveler
     # - name: hcl_domino_traveler_htmo
     # - name: hcl_domino_verse
     # - name: hcl_domino_appdevpack
     # - name: hcl_domino_rest_api
                             # hcl_voltmx
     # - name: hcl_domino_vagrant_readme
     # - name: startcloud_quick_start       # startcloud_quick_start
     # - name: startcloud_haproxy           # startcloud_haproxy
     # - name: startcloud_vagrant_readme    # startcloud_vagrant_readme
      - name: hcl_domino_leap                         # hcl_domino_leap
      - name: hcl_domino_nomadweb                     # hcl_domino_nomadweb
      - name: hcl_domino_traveler                     # hcl_domino_traveler
      - name: hcl_domino_traveler_htmo                # hcl_domino_traveler_htmo
      - name: hcl_domino_verse                        # hcl_domino_verse
      - name: hcl_domino_appdevpack                   # hcl_domino_appdevpack
      - name: hcl_domino_rest_api                      # hcl_domino_rest_api
                             # hcl_voltmx
      - name: hcl_domino_vagrant_readme
      - name: startcloud_quick_start       # startcloud_quick_start
      - name: startcloud_haproxy           # startcloud_haproxy
      - name: startcloud_vagrant_readme    # startcloud_vagrant_readme
JoelProminic commented 2 months ago

It looks like @piotrzarzycki21 pasted an example of Hosts.yml, but I think the template here is more relevant to this issue. Note that I used a permalink here, so we should check for updates before updating this repository.

MarkProminic commented 1 month ago

Role names are changing again, this time for the final time as I now know how Ansible and Ansible Galaxy want the roles to be structured.

https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_reuse_roles.html https://docs.ansible.com/ansible/latest/dev_guide/developing_collections_structure.html https://docs.ansible.com/ansible/latest/dev_guide/collections_galaxy_meta.html

It'll basically change from:

hcl_ROLENAME

or

startcloud_ROLENAME

to:

startcloud.hcl_roles.ROLENAME 

or

startcloud.startcloud_roles.ROLENAME

The Ansible Community want the roles to be a fully qualified collection name (FQCN), where startcloud is the org(or namespace), hcl_roles or startcloud_roles is the collection, and ROLENAME is the name of the role.

In regards to the v0.1.22 Hosts.template.yml.j2, the Hosts.template.yml.j2, included in this issue and the link by joel should NOT be referenced. I had only looked at it while others were putting it together glancingly, as such I cannot vouch that it's been fully vetted. I do see some issues with it:

  1. Extra roles that are commented out -- not to be confused with the roles that SHI injects
  2. Potentially Incorrect Role ordering -- In debugging someones issue I remember that I had to move a role around to get past their issue, which one I can't recall at the moment
  3. The address field, should NEVER DEFAULT to 192.168.2.1-- I don't know where, or how or why this was changed from v0.1.20
  4. Some Variables in this version are hardcoded in this TEMPLATE, they should reflect more like how v0.1.20 handles the variables. -- Such variables such as: leap_version, domino_server_installer_tar, etc, things in the VARs section.

    I am in the process of making v0.1.23, and I will follow up with this version.

piotrzarzycki21 commented 1 month ago

@MarkProminic How much work to have 0.1.23 ready ?