UNCLASSIFIED

Skip to content
Snippets Groups Projects

VTA yml config

  • Clone with SSH
  • Clone with HTTPS
  • Embed
  • Share
    The snippet can be accessed without any authentication.
    Authored by James Orman
    Edited
    snippetfile1.txt 8.23 KiB
    heat_template_version: 2018-03-02
    
    description: Student Op Stations - This is the Unified Student Ops Station YAML. Module configurations are made with each modules setup script and not in this YAML.
    
    parameters:
      domain:
        type: string
        label: Domain
        description: Set as '10.50.255.254' for VTA or '172.20.255.254' for VTA-DEV
        default: 10.50.255.254
        hidden: false
    
      package_proxy:
        type: string
        label: the URL for the package cache
        default: "http://pkg-cache.bbh.cyberschool.army.mil:3142"
    
      username:
        type: string
        label: User Name
        description: Sets the login username for the instances
        default: student
        hidden: false
    
      password:
        type: string
        label: Password
        description: Sets the Login Password for the instances
        default: password
        hidden: true
    
      vncpass:
        type: string
        label: VNC-Password
        description: Sets the regular VNC connection password
        default: password
        hidden: true
    
      view_only_password:
        type: string
        label: View-Only-Password
        description: Sets the VNC View Only Password for the instances
        default: view_only_password
        hidden: true
    
    resources:
      rand_string:
        type: OS::Heat::RandomString
        properties:
          length: 4
    
      # ----- Ops Network Configuration Start ----- #
      ops_network:
        type: OS::Neutron::Net
        properties:
          name:
            str_replace:
              template: ops_network_RAND
              params:
                RAND: { get_resource: rand_string }
          admin_state_up: true
          shared: false
    
      ops_subnet:
        type: OS::Neutron::Subnet
        depends_on: ops_network
        properties:
          cidr: 192.168.65.0/27
          gateway_ip:  192.168.65.30
          dns_nameservers: [{ get_param: domain }]
          enable_dhcp: true
          host_routes: [ ]
          ip_version: 4
          name:
            str_replace:
              template: ops_subnet_RAND
              params:
                RAND: { get_resource: rand_string }
          network_id:
            get_resource: ops_network
      # ----- Ops Network Configuration End ----- #
    
      # ----- Ops Router Configuration Start ----- #
      ops_neutron_router:
        type: OS::Neutron::Router
        properties:
          name:
            str_replace:
              template: ops_neutron_router_RAND
              params:
                RAND: { get_resource: rand_string }
          external_gateway_info:
            network: public
    
      ops_neutron_router_interface:
        type: OS::Neutron::RouterInterface
        properties:
          router_id: { get_resource: ops_neutron_router }
          subnet_id: { get_resource: ops_subnet }
      # ----- Ops Router Configuration Start ----- #
    
      # ----- Windows Analyst Workstation Configuration Start ----- #
      # Update notes 10/28/2022: The code below in the template section is left in for refrence as the win_ops_v2 includes this code and #is redundant.
      # Additionally; changes made are minor; added VSCode with powershell extension. Updated Powershell help.
    
      windows_opstation:
        type: OS::Nova::Server
        properties:
          diskConfig: AUTO
          flavor: cy.win_64
          image: win_ops
          name:
            str_replace:
              template: windows_opstation_RAND
              params:
                RAND: { get_resource: rand_string }
          networks:
            - port: { get_resource: windows_opstation_port }
          user_data_format: RAW
          user_data:
            str_replace:
              template: |
                #ps1_sysnative
    
                Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force
                # ---- Allows for creating alternate users other than student
                if ("$user" -ne "student"){
                    New-LocalUser -Name "$user" -Password (ConvertTo-SecureString -AsPlaintext -String "$pass" -Force)
                    Add-LocalGroupMember -Group "Administrators" -Member "$user"
                    Remove-LocalUser -Name "student"
                }
    
                #----Rename computer
                Rename-computer -newname "win-ops"
    
                exit 1001
    
              params:
                $user: { get_param: username }
                $pass: { get_param: password }
                $vncpass: { get_param: vncpass }
                $vncviewpass: { get_param: view_only_password }
                $domain: { get_param: domain}
      # ----- Windows Analyst Workstation Configuration End ----- #
    
      # ----- Windows Analyst Workstation Port Configuration Start ----- #
      windows_opstation_port:
        type: OS::Neutron::Port
        description: Windows OpStation IP
        properties:
          name:
            str_replace:
              template: windows_opstation_port_RAND
              params:
                RAND: { get_resource: rand_string }
          network_id: { get_resource: ops_network }
          fixed_ips:
          #- subnet_id: {get_resource: ops_subnet }
          - ip_address: 192.168.65.10
          port_security_enabled: false
    
      windows_opstation_float_ip:
        type: OS::Neutron::FloatingIP
        description: Windows OpStation Floating IP
        depends_on: ops_neutron_router
        properties: { floating_network: public }
    
      windows_opstation_float_ip_assoc:
        type: OS::Neutron::FloatingIPAssociation
        depends_on: ops_neutron_router_interface
        properties:
          floatingip_id: { get_resource: windows_opstation_float_ip }
          port_id: { get_resource: windows_opstation_port }
      # ----- Windows Analyst Workstation Port Configuration End ----- #
    
      # ----- Linux Analyst Workstation Configuration Start ----- #
      linux_opstation:
        type: OS::Nova::Server
        properties:
          name:
            str_replace:
              template: linux_opstation_RAND
              params:
                RAND: { get_resource: rand_string }
          image: nix_ops
          flavor: cy.xlarge2
          networks:
            - port: { get_resource: linux_opstation_port }
          diskConfig: AUTO
          config_drive: true
          user_data_format: RAW
          user_data:
            str_replace:
              template: |
                #!/bin/bash
    
                #------ Purge at next image cycle
                # SPICE driver fix
                echo "X-GNOME-Autostart-enabled=false" | tee /etc/xdg/autostart/spice-vdagent.desktop /usr/share/gdm/autostart/LoginWindow/spice-vdagent.desktop > /dev/null
                systemctl stop spice-vdagent
                systemctl disable spice-vdagent
                #
    
                if [[ "$user" != "student" ]]
                  then
                    useradd -m -U -s /bin/bash $user
                    usermod -aG sudo $user
                    echo "$user:$pass" | chpasswd
                    #userdel -r student
                fi
    
                hostnamectl set-hostname lin-ops
    
                #------ Purge at next image cycle
                echo 'Acquire::http { Proxy "$packageproxy"; }' >> /etc/apt/apt.conf.d/00aptproxy
                sed -i 's/nova.clouds.archive.ubuntu.com/atl.mirrors.clouvider.net/g' /etc/apt/sources.list
                apt-get update -y
                apt-get install gcc-multilib mingw-w64 mingw-w64-common mingw-w64-i686-dev mingw-w64-tools mingw-w64-tools mingw-w64-x86-64-dev john eom -y
                runuser -l student -c 'pip install lxml requests'
                apt install python-openstackclient -y
                apt install python-heatclient -y
                #
    
              params:
                $user: { get_param: username }
                $pass: { get_param: password }
                $vncpass: { get_param: vncpass }
                $vncviewpass: { get_param: view_only_password }
                $domain: { get_param: domain}
                $packageproxy: { get_param: package_proxy }
      # ----- Linux Analyst Workstation Configuration End ----- #
    
    
      # ----- Linux Analyst Workstation Port Configuration Start ----- #
      linux_opstation_port:
        type: OS::Neutron::Port
        description: Linux OpStation IP
        properties:
          name:
            str_replace:
              template: linux_opstation_port_RAND
              params:
                RAND: { get_resource: rand_string }
          network_id: { get_resource: ops_network }
          fixed_ips:
          #- subnet_id: {get_resource: ops_subnet }
          - ip_address: 192.168.65.20
          port_security_enabled: false
    
      linux_opstation_float_ip:
        type: OS::Neutron::FloatingIP
        description: Linux OpStation Floating IP
        depends_on: ops_neutron_router
        properties: { floating_network: public }
    
      linux_opstation_float_ip_assoc:
        type: OS::Neutron::FloatingIPAssociation
        depends_on: ops_neutron_router_interface
        properties:
          floatingip_id: { get_resource: linux_opstation_float_ip }
          port_id: { get_resource: linux_opstation_port }
      # ----- Linux Analyst Workstation Configuration End ----- #
    0% or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment