Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
JoelProminic opened this issue Feb 28, 2024 · 5 comments
Open
Assignees
Labels
bug Something isn't working enhancement New feature or request
Milestone

Comments

@JoelProminic
Copy link
Collaborator

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
Copy link
Collaborator

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 JoelProminic changed the title Update Hosts.template.yml.j2 Template Update Hosts.template.yml.j2 Template for v0.1.22 Role Names Apr 19, 2024
@JoelProminic
Copy link
Collaborator Author

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
Copy link
Contributor

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
Copy link
Collaborator

@MarkProminic How much work to have 0.1.23 ready ?

@MarkProminic
Copy link
Contributor

I need to do the following before I start the release zip action:

  1. Get the Domino Additional Server Generation Tool into the standalone server: Action to Generate Additional Domino Server ID Moonshine-IDE/Super.Human.Installer#124

  2. Test on each OS, and that each role runs by setting up a Standalone/Additional Pair on each OS with all Roles enabled

Role Name Mac Status Windows Status Bhyve Status
startcloud.startcloud_roles.setup Pending Pending Pending
startcloud.startcloud_roles.networking Pending Pending Pending
startcloud.startcloud_roles.disks Pending Pending Pending
startcloud.startcloud_roles.hostname Pending Pending Pending
startcloud.startcloud_roles.dependencies Pending Pending Pending
startcloud.startcloud_roles.mdns Pending Pending Pending
startcloud.startcloud_roles.service_user Pending Pending Pending
startcloud.startcloud_roles.sdkman_install Pending Pending Pending
startcloud.startcloud_roles.sdkman_java Pending Pending Pending
startcloud.startcloud_roles.sdkman_maven Pending Pending Pending
startcloud.startcloud_roles.sdkman_gradle Pending Pending Pending
startcloud.startcloud_roles.ssl Pending Pending Pending
startcloud.hcl_roles.domino_reset Pending Pending Pending
startcloud.hcl_roles.domino_install Pending Pending Pending
startcloud.hcl_roles.domino_vagrant_rest_api Pending Pending Pending
startcloud.hcl_roles.domino_service_nash Pending Pending Pending
startcloud.hcl_roles.domino_java_config Pending Pending Pending
startcloud.hcl_roles.domino_java_tools Pending Pending Pending
startcloud.hcl_roles.domino_updatesite Pending Pending Pending
startcloud.hcl_roles.domino_config Pending Pending Pending
startcloud.hcl_roles.domino_genesis Pending Pending Pending
startcloud.hcl_roles.domino_genesis_applications Pending Pending Pending
startcloud.hcl_roles.domino_cross_certify Pending Pending Pending
startcloud.hcl_roles.domino_java_app_example Pending Pending Pending
startcloud.hcl_roles.domino_leap Pending Pending Pending
startcloud.hcl_roles.domino_traveler Pending Pending Pending
startcloud.hcl_roles.domino_traveler_htmo Pending Pending Pending
startcloud.hcl_roles.domino_verse Pending Pending Pending
startcloud.hcl_roles.domino_appdevpack Pending Pending Pending
startcloud.hcl_roles.domino_rest_api Pending Pending Pending
startcloud.hcl_roles.domino_nomadweb Pending Pending Pending
startcloud.hcl_roles.domino_vagrant_readme Pending Pending Pending
startcloud.startcloud_roles.quick_start Pending Pending Pending
startcloud.startcloud_roles.haproxy Pending Pending Pending
startcloud.startcloud_roles.vagrant_readme Pending Pending Pending
startcloud.startcloud_roles.lockdown Pending Pending Pending

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants