Thanks Alexandru,

@Granwille Strauss <granwi...@namhost.com> , what I usually do in this
sittuation (because cloud init can be a real pain):
- start an instance
- troubleshoot
- change cloud-init config
-  run cloud-init clean
- reboot the instance

It is possible that DCHP hostname overwrites locally configured hostname
(there is such a bug for Debian preseed, not sure if that is your case
though).
Try looking in the cloud-init startup log and if user-data loads properly,
just start disabling cloud-init modules one by one until you find the
culprit.

Regards,
Jordan





On Wed, Aug 14, 2024 at 10:55 AM Alexandru Stan
<alexandru.s...@lifeincloud.com.invalid> wrote:

> Hi Jordan,
>
> The sudo line in the documentation is not correct (maybe a format issue?),
> I always got errors when doing sudo su with the created user. This works,
> however:
>
> sudo: ["ALL=(ALL) NOPASSWD:ALL"]
>
>
>
>
> -----Original Message-----
> From: jordan j <yordan...@gmail.com>
> Sent: Tuesday, August 13, 2024 6:26 PM
> To: users@cloudstack.apache.org
> Cc: ruben.bo...@cldin.eu
> Subject: Re: Cloud-Init not working as per Cloudstack documentation
>
> Hello Granwille,
>
> Disable the network from system_info and try again.
> I have found that cloud-init has issues with handling networking on some
> os-es and because of that it does not start properly.
> Unfortunately I have not spent time on research of "Why".
>
> echo "system_info:
>   default_user:
>     name: cloud-user
>     lock_passwd: false
>     sudo: [\"ALL=(ALL) ALL\"] \
>   network:
>     config: disabled" > /etc/cloud/cloud.cfg.d/80_root.cfg
>
> Regards,
> Jordan
>
>
> On Mon, Aug 12, 2024 at 9:40 AM Granwille Strauss
> <granwi...@namhost.com.invalid> wrote:
>
> > Hi Ruben
> >
> > Thank you very much, I have watched this and all other related online
> > videos to best assist with this. I can 100% confirm when I curl the
> > virtual router from the VM that I see the userdata perfectly fine, but
> > something keeps overwriting my custom changes when I boot the VM.
> > Something else keeps setting the VM hostname, to the "Name" specified
> > when the VM is created in Cloudstack. Its as if another datasource is
> > triggering it each time.
> >
> > It would be nice if someone could assist with their cloud-init
> > configuration and potential userdata that helps set custom values when
> > a VM is booted, specifically the hostname.
> > On 8/10/24 21:11, Ruben Bosch wrote:
> >
> > Hi Granwille,
> >
> > Wido has done a great talk about cloudinit. Check it out
> > here:https://www.youtube.com/watch?v=seknX44Ktfc. You can check the
> > details of your supplied userdata in the virtual router to see whether
> what you stored in the UI/API is what is supplied to the VM.
> >
> > On Fri, Aug 9, 2024 at 11:39 AM Granwille 
> > Strauss<granwi...@namhost.com.invalid>
> <granwi...@namhost.com.invalid> wrote:
> >
> >
> > Hi Guys
> >
> > Any help on this? Surely I am using *userdata* right via the UI? Or
> > should I log this on GitHub instead?
> > On 8/8/24 10:32, Granwille Strauss wrote:
> >
> > Hi
> >
> > I push *userdata* manually when I deploy a VM and still it does not
> > want to work:
> >
> > I have this in place now:
> >
> > #cloud-config
> > hostname: hostname.example.com
> > fqdn: hostname.example.com
> > prefer_fqdn_over_hostname: true
> > create_hostname_file: true
> > preserve_hostname: true
> >
> >
> > Screenshot:https://www.awesomescreenshot.com/image/49925105?key=a51b72
> > 9871fb9239579c1604c43677a3
> >
> > Instead, it keeps pulling this instead and not accepting my manual
> inputs:
> >
> > 2024-08-08 08:21:40,488 - util.py[DEBUG]: Writing to
> > /var/lib/cloud/instances/a3da80ae-1cc3-4c3b-9204-5d2a14f58fef/vendor-d
> > ata2.txt.i
> > - wb: [600] 308 bytes
> > 2024-08-08 08:21:40,489 - cc_set_hostname.py[DEBUG]: Setting the
> > hostname to VMNAME FROM UI (VMNAME FROM UI)
> > 2024-08-08 08:21:40,489 - subp.py[DEBUG]: Running command
> > ['hostnamectl', 'set-hostname', 'VMNAME FROM UI'] with allowed return
> > codes [0] (shell=False, capture=True)
> > 2024-08-08 08:21:40,512 - __init__.py[DEBUG]: Non-persistently setting
> > the system hostname to VMNAME FROM UI
> > 2024-08-08 08:21:40,512 - subp.py[DEBUG]: Running command ['hostname',
> > 'VMNAME FROM UI'] with allowed return codes [0] (shell=False,
> > capture=True)
> > 2024-08-08 08:21:40,522 - atomic_helper.py[DEBUG]: Atomically writing
> > to file /var/lib/cloud/data/set-hostname (via temporary file
> > /var/lib/cloud/data/tmpskrfsk7k) - w: [644] 53 bytes/chars
> > 2024-08-08 08:21:40,523 - util.py[DEBUG]: Writing to
> > /var/lib/cloud/instances/a3da80ae-1cc3-4c3b-9204-5d2a14f58fef/sem/cons
> > ume_data
> > - wb: [644] 24 bytes
> > 2024-08-08 08:21:40,524 - helpers.py[DEBUG]: Running consume_data
> > using lock (<FileLock using file
> > '/var/lib/cloud/instances/a3da80ae-1cc3-4c3b-9204-5d2a14f58fef/sem/con
> > sume_data'>)
> > 2024-08-08 08:21:40,524 - handlers.py[DEBUG]: start:
> > init-network/consume-user-data: reading and applying user-data
> > 2024-08-08 08:21:40,525 - stages.py[DEBUG]: Added default handler for
> > {'text/cloud-config', 'text/cloud-config-jsonp'} from
> > CloudConfigPartHandler: [['text/cloud-config',
> > 'text/cloud-config-jsonp']]
> >
> >
> > Anyone that can guide me with how to use *userdata* via the Cloudstack
> > UI correctly, please?
> > On 8/8/24 01:01, Granwille Strauss wrote:
> >
> > Hi
> >
> > Thank you, you were right. After creating a new template and having
> > the root last, the growfs worked 100%. Thank you for this.
> >
> > This now brings me to *userdata* in cloudstack that's not working. I
> > registered a new userdata in the UI:
> >
> > #cloud-config hostname: {{ ds.meta_data.custom_hostname }} fqdn: {{
> > ds.meta_data.custom_hostname }} prefer_fqdn_over_hostname: true
> > create_hostname_file: true
> >
> > Declared the *custom_hostname  *variable and when booting a VM it
> > still
> > fails:
> >
> > 2024-08-07 22:46:56,673 - stages.py[DEBUG]: Added default handler for
> > {'text/jinja2'} from JinjaTemplatePartHandler: [['text/jinja2']]
> > 2024-08-07 22:46:56,673 - __init__.py[DEBUG]: Calling handler
> > CloudConfigPartHandler: [['text/cloud-config',
> > 'text/cloud-config-jsonp']] (__begin__, None, 3) with frequency
> > once-per-instance
> > 2024-08-07 22:46:56,673 - __init__.py[DEBUG]: Calling handler
> > ShellScriptPartHandler: [['text/x-shellscript']] (__begin__, None, 2)
> > with frequency once-per-instance
> > 2024-08-07 22:46:56,674 - __init__.py[DEBUG]: Calling handler
> > ShellScriptByFreqPartHandler: [['text/x-shellscript-per-boot']]
> > (__begin__, None, 2) with frequency once-per-instance
> > 2024-08-07 22:46:56,674 - __init__.py[DEBUG]: Calling handler
> > ShellScriptByFreqPartHandler: [['text/x-shellscript-per-instance']]
> > (__begin__, None, 2) with frequency once-per-instance
> > 2024-08-07 22:46:56,674 - __init__.py[DEBUG]: Calling handler
> > ShellScriptByFreqPartHandler: [['text/x-shellscript-per-once']]
> > (__begin__, None, 2) with frequency once-per-instance
> > 2024-08-07 22:46:56,674 - __init__.py[DEBUG]: Calling handler
> > BootHookPartHandler: [['text/cloud-boothook']] (__begin__, None, 2)
> > with frequency once-per-instance
> > 2024-08-07 22:46:56,674 - __init__.py[DEBUG]: Calling handler
> > JinjaTemplatePartHandler: [['text/jinja2']] (__begin__, None, 3) with
> > frequency once-per-instance
> > 2024-08-07 22:46:56,674 - __init__.py[DEBUG]: {'MIME-Version': '1.0',
> > 'Content-Type': 'text/cloud-config', 'Content-Disposition':
> > 'attachment; filename="part-001"'}
> > 2024-08-07 22:46:56,674 - __init__.py[DEBUG]: Calling handler
> > CloudConfigPartHandler: [['text/cloud-config',
> > 'text/cloud-config-jsonp']] (text/cloud-config, part-001, 3) with
> > frequency once-per-instance
> > 2024-08-07 22:46:56,674 - util.py[DEBUG]: Attempting to load yaml from
> > string of length 158 with allowed root types (<class 'dict'>,)
> > 2024-08-07 22:46:56,676 - util.py[WARNING]: Failed loading yaml blob.
> > Invalid format at line 2 column 11: "while constructing a mapping
> >   in "<unicode string>", line 2, column 11:
> >     hostname: {{ ds.meta_data.custom_hostname }}
> >               ^
> > found unhashable key
> >   in "<unicode string>", line 2, column 12:
> >     hostname: {{ ds.meta_data.custom_hostname }}
> >                ^"
> > 2024-08-07 22:46:56,676 - cloud_config.py[WARNING]: Failed at merging
> > in cloud config part from part-001: empty cloud config
> > 2024-08-07 22:46:56,676 - __init__.py[DEBUG]: Calling handler
> > CloudConfigPartHandler: [['text/cloud-config',
> > 'text/cloud-config-jsonp']] (__end__, None, 3) with frequency
> > once-per-instance
> > 2024-08-07 22:46:56,677 - util.py[DEBUG]: Writing to
> > /var/lib/cloud/instances/c366e71a-220c-48ed-aba1-bdd8a932064b/cloud-co
> > nfig.txt
> > - wb: [600] 77 bytes
> > 2024-08-07 22:46:56,677 - util.py[DEBUG]: Restoring selinux mode for
> > /var/lib/cloud/instances/c366e71a-220c-48ed-aba1-bdd8a932064b/cloud-co
> > nfig.txt
> > (recursive=False)
> > 2024-08-07 22:46:56,678 - util.py[DEBUG]: Restoring selinux mode for
> > /var/lib/cloud/instances/c366e71a-220c-48ed-aba1-bdd8a932064b/cloud-co
> > nfig.txt
> > (recursive=False)
> > 2024-08-07 22:46:56,679 - __init__.py[DEBUG]: Calling handler
> > ShellScriptPartHandler: [['text/x-shellscript']] (__end__, None, 2)
> > with frequency once-per-instance
> >
> >
> > What am I doing wrong in this case? And why does the VM hostname keep
> > defaulting to the instance name specified in the UI instead?
> >
> > I also created the following in */etc/cloud/cloud.cfg.d*, which
> > injects my SSH key and updated packages and installs a few additional
> > ones, but this too seems to fail:
> >
> > #cloud-config
> > ssh_authorized_keys:
> >   - <my pub key>
> > package_update: true
> > package_upgrade: true
> > packages:
> >   - epel-release
> >   - neofetch
> >   - htop
> >   - gcc
> >   - gcc-c++
> >   - perl
> >
> >
> > Here's the error:
> >
> > 2024-08-07 22:47:00,315 - rhel.py[DEBUG]: Using DNF for package
> > management
> > 2024-08-07 22:47:00,315 - subp.py[DEBUG]: Running command ['dnf',
> > '-y', 'makecache'] with allowed return codes [0] (shell=False,
> > capture=False)
> > 2024-08-07 22:47:05,331 - rhel.py[DEBUG]: Using DNF for package
> > management
> > 2024-08-07 22:47:05,331 - subp.py[DEBUG]: Running command ['dnf',
> > '-y', 'upgrade'] with allowed return codes [0] (shell=False,
> > capture=False)
> > 2024-08-07 22:47:07,103 - rhel.py[DEBUG]: Using DNF for package
> > management
> > 2024-08-07 22:47:07,103 - subp.py[DEBUG]: Running command ['dnf',
> > '-y', 'install', 'epel-release', 'neofetch', 'htop', 'gcc', 'gcc-c++',
> > 'perl'] with allowed return codes [0] (shell=False, capture=False)
> > 2024-08-07 22:47:08,573 - util.py[WARNING]: Failed to install packages:
> > ['epel-release', 'neofetch', 'htop', 'gcc', 'gcc-c++', 'perl']
> > 2024-08-07 22:47:08,575 - util.py[DEBUG]: Failed to install packages:
> > ['epel-release', 'neofetch', 'htop', 'gcc', 'gcc-c++', 'perl']
> > Traceback (most recent call last):
> >   File
> > "/usr/lib/python3.6/site-packages/cloudinit/config/cc_package_update_u
> > pgrade_install.py",
> > line 121, in handle
> >     cloud.distro.install_packages(pkglist)
> >   File "/usr/lib/python3.6/site-packages/cloudinit/distros/rhel.py",
> > line 59, in install_packages
> >     self.package_command("install", pkgs=pkglist)
> >   File "/usr/lib/python3.6/site-packages/cloudinit/distros/rhel.py",
> > line 201, in package_command
> >     subp.subp(cmd, capture=False)
> >   File "/usr/lib/python3.6/site-packages/cloudinit/subp.py", line 323,
> > in subp
> >     stdout=out, stderr=err, exit_code=rc, cmd=args
> > cloudinit.subp.ProcessExecutionError: Unexpected error while running
> > command.
> > Command: ['dnf', '-y', 'install', 'epel-release', 'neofetch', 'htop',
> > 'gcc', 'gcc-c++', 'perl'] Exit code: 1
> > Reason: -
> > Stdout: -
> > Stderr: -
> > 2024-08-07 22:47:08,582 -
> > cc_package_update_upgrade_install.py[WARNING]: 1 failed with
> > exceptions, re-raising the last one
> > 2024-08-07 22:47:08,582 - handlers.py[DEBUG]: finish:
> > modules-final/config-package_update_upgrade_install: FAIL: running
> > config-package_update_upgrade_install with frequency once-per-instance
> > 2024-08-07 22:47:08,582 - util.py[WARNING]: Running module
> > package_update_upgrade_install (<module
> > 'cloudinit.config.cc_package_update_upgrade_install' from
> > '/usr/lib/python3.6/site-packages/cloudinit/config/cc_package_update_u
> > pgrade_install.py'>)
> > failed
> > 2024-08-07 22:47:08,582 - util.py[DEBUG]: Running module
> > package_update_upgrade_install (<module
> > 'cloudinit.config.cc_package_update_upgrade_install' from
> > '/usr/lib/python3.6/site-packages/cloudinit/config/cc_package_update_u
> > pgrade_install.py'>)
> > failed
> >
> >
> > My main concern is the hostname that I cannot seem to set no matter
> > what I try, if I can get this at least right that would be the
> > ultimate. How can I pass the update_hostname userdata so that I can
> > manually enter custom hostnames when deploying  VM via UI?
> > On 8/7/24 22:52, Alexandru Stan wrote:
> >
> > Hello,
> >
> > Can’t say about everything you mentioned, but regarding the disk
> resizinng I can share my experience, I also had some issues before I
> managed to get it working. So, from what I’ve searched, growpart does not
> seem to work with lvm (could be wrong here though), so basic partitioning
> it is. Then, it seems that it extends the partition only if it’s the last
> one on the disk, seems to be your issue since the last partition is the
> swap partition. Try with the root partition being the last one, it should
> work fine.
> >
> >
> > From: Granwille Strauss <granwi...@namhost.com.INVALID>
> > <granwi...@namhost.com.INVALID> <granwi...@namhost.com.INVALID>
> > <granwi...@namhost.com.INVALID>
> > Sent: 7 August, 2024 20:35
> > To: users@cloudstack.apache.org
> > Subject: Cloud-Init not working as per Cloudstack documentation
> >
> >
> > Evening,
> >
> > Please note, I do not use any API service and solely rely on the
> Cloudstack UI.
> >
> > I deployed a new clean template and I followed the cloudstack
> documentation thoroughly to use the basics of cloud-init with cloudstack.
> But when I deployed my VM nothing seems to trigger at all, including
> userdata I registered.
> > pwd
> > /etc/cloud/cloud.cfg.d
> > [root@hostname cloud.cfg.d]# ll
> > total 32
> > -rw-r--r--. 1 root root 2070 Dec  4  2023 05_logging.cfg
> > -rw-r--r--. 1 root root   22 Aug  7 17:43 49_hostkeys.cfg
> > -rw-r--r--. 1 root root   88 Aug  7 17:45 50_growpartion.cfg
> > -rw-r--r--. 1 root root  209 Aug  7 17:52 51_extend_volume.cfg
> > -rw-r--r--. 1 root root  143 Aug  7 17:55 52_upgrade_packages.cfg
> > -rw-r--r--. 1 root root  355 Aug  7 18:00 53_install_packages.cfg
> > -rw-r--r--. 1 root root  357 Aug  7 17:42 80_user.cfg -rw-r--r--. 1
> > root root  167 Dec  4  2023 README
> >
> >
> > For example, I deployed a new VM with its root disk overwrite from the
> template, which was 10 GB to 60 GB and the 50_growpartion.cfg did nothing:
> > [root@hostname cloud.cfg.d]# cat 50_growpartion.cfg
> > growpart:
> >   mode: auto
> >   devices:
> >     - \"/dev/vda2\"
> >   ignore_growroot_disabled: false
> > cat 51_extend_volume.cfg
> > runcmd:
> >   - [ cloud-init-per, always, grow_FS, resize2fs, /dev/vda2 ]
> >
> > grep "50_growpartion.cfg" /var/log/cloud-init.log
> > 2024-08-07 16:50:45,881 - util.py[DEBUG]: Reading from
> > /etc/cloud/cloud.cfg.d/50_growpartion.cfg (quiet=False)
> > 2024-08-07 16:50:45,881 - util.py[DEBUG]: Read 88 bytes from
> > /etc/cloud/cloud.cfg.d/50_growpartion.cfg
> > 2024-08-07 16:50:45,928 - util.py[DEBUG]: Reading from
> > /etc/cloud/cloud.cfg.d/50_growpartion.cfg (quiet=False)
> > 2024-08-07 16:50:45,928 - util.py[DEBUG]: Read 88 bytes from
> > /etc/cloud/cloud.cfg.d/50_growpartion.cfg
> > 2024-08-07 16:50:46,046 - util.py[DEBUG]: Reading from
> > /etc/cloud/cloud.cfg.d/50_growpartion.cfg (quiet=False)
> > 2024-08-07 16:50:46,046 - util.py[DEBUG]: Read 88 bytes from
> > /etc/cloud/cloud.cfg.d/50_growpartion.cfg
> > lsblk
> > NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
> > sr0     11:0    1 1024M  0 rom
> > vda    253:0    0   60G  0 disk
> > ├─vda1 253:1    0  512M  0 part /boot
> > ├─vda2 253:2    0  7.5G  0 part /
> > └─vda3 253:3    0    2G  0 part [SWAP]
> > The same happens with the userdata specified, because I don't use an
> API, I need to set custom value, such as a hostname when I boot a VM I
> created the following userdata in the UI as per doc:
> >
> >
> > #cloud-config runcmd: - echo 'hostname {{ ds.meta_data.hostname1 }}' >
> > /tmp/hostname - echo '{{ ds.meta_data.hostname1 }} > /etc/hostname' >
> /tmp/hostname - echo 'hostnamectl set-hostname {{ ds.meta_data.hostname1
> }}' > /tmp/hostname And I declared the hostname1 variable, which allows me
> to specify the hostname under "Advanced" settings when I create a new
> instance. But nothing, for some reason, it keeps setting the VM name as the
> server hostname. But periods (.) are not allowed in the Name field for me
> to continue with this method and I need to be able to have special
> characters in the hostname for FQDNS spmetimes.
> >
> > The only cloud-init command that ran was the 80_user.cfg that creates a
> managed user, that was the only one that worked. My upgrade and install
> configs none ran:
> > cat 52_upgrade_packages.cfg
> > #cloud-config
> >
> > # Upgrade the instance on first boot
> > # (ie run apt-get upgrade)
> > #
> > # Default: false
> > # Aliases: apt_upgrade
> > cat  53_install_packages.cfg
> > #cloud-config
> >
> > # Install additional packages on first boot # # Default: none # # if
> > packages are specified, this apt_update will be set to true # #
> > packages may be supplied as a single package name or as a list # with
> > the format [<package>, <version>] wherein the specifc # package
> > version will be installed.
> > packages:
> >  - epel-release
> >  - neofetch
> >  - htop
> > And here's my cloud.cfg:
> > cat cloud.cfg
> > datasource_list: ["CloudStack"]
> >
> > datasource:
> >   CloudStack:
> >     max_wait: 120
> >     timeout: 50
> >
> > network:
> >   config: disabled
> >
> > users:
> >   - default
> >
> > system_info:
> >   default_user:
> >     name: root
> >
> > disable_root: false
> >
> > ssh_deletekeys: true
> >
> > cloud_init_modules:
> >  - seed_random
> >  - bootcmd
> >  - write-files
> >  - growpart
> >  - resizefs
> >  - disk_setup
> >  - mounts
> >  - set_hostname
> >  - update_hostname
> >  - update_etc_hosts
> >  - [ssh, always]
> >  - users-groups
> >
> > cloud_config_modules:
> >  - ssh-import-id
> >  - locale
> >  - [ set-passwords, always ]
> >  - ntp
> >  - timezone
> >  - disable-ec2-metadata
> >  - [runcmd, always]
> >
> > cloud_final_modules:
> >  - scripts-vendor
> >  - scripts-per-once
> >  - scripts-per-boot
> >  - scripts-per-instance
> >  - [scripts-user, always]
> >  - puppet
> >
> > warnings:
> >   dsid_missing_source: off
> >
> > Am I missing something with this? Any assistance will be greatly
> appreciated.
> > --
> > Regards / Groete
> > [https://www.namhost.com/t/namhost/images/mail/namhost-email-sig-logo.
> > png]<https://www.namhost.com/> <https://www.namhost.com/>
> > <https://www.namhost.com/> <https://www.namhost.com/> Granwille
> > Strauss  //  Senior Systems Admin
> >
> > e: granwi...@namhost.com<mailto:granwi...@namhost.com>
> > <granwi...@namhost.com> <granwi...@namhost.com>
> > <granwi...@namhost.com>
> > m: +264 81 323 1260<tel:+264813231260> <+264813231260> <+264813231260>
> > w: www.namhost.com<https://www.namhost.com/>
> > <https://www.namhost.com/> <https://www.namhost.com/>
> > <https://www.namhost.com/>
> >
> > [https://www.namhost.com/t/namhost/images/mail/facebook.png]<https://w
> > ww.facebook.com/namhost> <https://www.facebook.com/namhost>
> > <https://www.facebook.com/namhost>
> > <https://www.facebook.com/namhost>[https://www.namhost.com/t/namhost/i
> > mages/mail/twitter.png]<https://twitter.com/namhost>
> > <https://twitter.com/namhost> <https://twitter.com/namhost>
> > <https://twitter.com/namhost>[https://www.namhost.com/t/namhost/images
> > /mail/instagram.png]<https://www.instagram.com/namhostinternetservices
> > /> <https://www.instagram.com/namhostinternetservices/>
> > <https://www.instagram.com/namhostinternetservices/>
> > <https://www.instagram.com/namhostinternetservices/>[https://www.namho
> > st.com/t/namhost/images/mail/linkedin.png]<https://www.linkedin.com/co
> > mpany/namhost> <https://www.linkedin.com/company/namhost>
> > <https://www.linkedin.com/company/namhost>
> > <https://www.linkedin.com/company/namhost>[https://www.namhost.com/t/n
> > amhost/images/mail/youtube.png]<https://www.youtube.com/channel/UCTd5v
> > -kVPaic_dguGur15AA>
> > <https://www.youtube.com/channel/UCTd5v-kVPaic_dguGur15AA>
> > <https://www.youtube.com/channel/UCTd5v-kVPaic_dguGur15AA>
> > <https://www.youtube.com/channel/UCTd5v-kVPaic_dguGur15AA>
> >
> > [https://www.namhost.com/t/namhost/images/mail/yourmove-email-banner.p
> > ng]<https://www.namhost.com/your-move>
> > <https://www.namhost.com/your-move>
> > <https://www.namhost.com/your-move>
> > <https://www.namhost.com/your-move>
> > Namhost Internet Services (Pty) Ltd ,
> >
> >                     24 Black Eagle Rd, Hermanus, 7210, RSA
> >
> >
> >
> > The content of this message is confidential. If you have received it
> > by mistake, please inform us by email reply and then delete the
> > message. It is forbidden to copy, forward, or in any way reveal the
> > contents of this message to anyone without our explicit consent. The
> > integrity and security of this email cannot be guaranteed over the
> > Internet. Therefore, the sender will not be held liable for any damage
> > caused by the message. For our full privacy policy and disclaimers,
> > please go to https://www.namhost.com/privacy-policy
> >
> > --
> > Regards / Groete
> > <https://www.namhost.com> <https://www.namhost.com> Granwille Strauss
> > //  Senior Systems Admin
> >
> > *e:* granwi...@namhost.com
> > *m:* +264 81 323 1260 <+264813231260>
> > *w:* www.namhost.com
> > <https://www.facebook.com/namhost> <https://www.facebook.com/namhost>
> > <https://twitter.com/namhost>
> > <https://twitter.com/namhost><https://www.instagram.com/namhostinterne
> > tservices/>
> > <https://www.instagram.com/namhostinternetservices/><https://www.linke
> > din.com/company/namhost>
> > <https://www.linkedin.com/company/namhost><https://www.youtube.com/cha
> > nnel/UCTd5v-kVPaic_dguGur15AA>
> > <https://www.youtube.com/channel/UCTd5v-kVPaic_dguGur15AA>
> > <https://www.namhost.com/your-move>
> > <https://www.namhost.com/your-move>
> >
> > Namhost Internet Services (Pty) Ltd ,
> >
> >                     24 Black Eagle Rd, Hermanus, 7210, RSA
> >
> >
> >
> > The content of this message is confidential. If you have received it
> > by mistake, please inform us by email reply and then delete the
> > message. It is forbidden to copy, forward, or in any way reveal the
> > contents of this message to anyone without our explicit consent. The
> > integrity and security of this email cannot be guaranteed over the
> > Internet. Therefore, the sender will not be held liable for any damage
> > caused by the message. For our full privacy policy and disclaimers,
> > please go tohttps://www.namhost.com/privacy-policy
> >
> >
> > --
> > Regards / Groete
> > <https://www.namhost.com> <https://www.namhost.com> Granwille Strauss
> > //  Senior Systems Admin
> >
> > *e:* granwi...@namhost.com
> > *m:* +264 81 323 1260 <+264813231260>
> > *w:* www.namhost.com
> > <https://www.facebook.com/namhost> <https://www.facebook.com/namhost>
> > <https://twitter.com/namhost>
> > <https://twitter.com/namhost><https://www.instagram.com/namhostinterne
> > tservices/>
> > <https://www.instagram.com/namhostinternetservices/><https://www.linke
> > din.com/company/namhost>
> > <https://www.linkedin.com/company/namhost><https://www.youtube.com/cha
> > nnel/UCTd5v-kVPaic_dguGur15AA>
> > <https://www.youtube.com/channel/UCTd5v-kVPaic_dguGur15AA>
> > <https://www.namhost.com/your-move>
> > <https://www.namhost.com/your-move>
> >
> > Namhost Internet Services (Pty) Ltd ,
> >
> >                     24 Black Eagle Rd, Hermanus, 7210, RSA
> >
> >
> >
> > The content of this message is confidential. If you have received it
> > by mistake, please inform us by email reply and then delete the
> > message. It is forbidden to copy, forward, or in any way reveal the
> > contents of this message to anyone without our explicit consent. The
> > integrity and security of this email cannot be guaranteed over the
> > Internet. Therefore, the sender will not be held liable for any damage
> > caused by the message. For our full privacy policy and disclaimers,
> > please go tohttps://www.namhost.com/privacy-policy
> >
> >
> > --
> > Regards / Groete
> > <https://www.namhost.com> <https://www.namhost.com> Granwille Strauss
> > //  Senior Systems Admin
> >
> > *e:* granwi...@namhost.com
> > *m:* +264 81 323 1260 <+264813231260>
> > *w:* www.namhost.com
> > <https://www.facebook.com/namhost> <https://www.facebook.com/namhost>
> > <https://twitter.com/namhost>
> > <https://twitter.com/namhost><https://www.instagram.com/namhostinterne
> > tservices/>
> > <https://www.instagram.com/namhostinternetservices/><https://www.linke
> > din.com/company/namhost>
> > <https://www.linkedin.com/company/namhost><https://www.youtube.com/cha
> > nnel/UCTd5v-kVPaic_dguGur15AA>
> > <https://www.youtube.com/channel/UCTd5v-kVPaic_dguGur15AA>
> > <https://www.namhost.com/your-move>
> > <https://www.namhost.com/your-move>
> >
> > Namhost Internet Services (Pty) Ltd ,
> >
> >                     24 Black Eagle Rd, Hermanus, 7210, RSA
> >
> >
> >
> > The content of this message is confidential. If you have received it
> > by mistake, please inform us by email reply and then delete the
> > message. It is forbidden to copy, forward, or in any way reveal the
> > contents of this message to anyone without our explicit consent. The
> > integrity and security of this email cannot be guaranteed over the
> > Internet. Therefore, the sender will not be held liable for any damage
> > caused by the message. For our full privacy policy and disclaimers,
> > please go tohttps://www.namhost.com/privacy-policy
> >
> >  --
> > Regards / Groete
> >
> > <https://www.namhost.com> Granwille Strauss  //  Senior Systems Admin
> >
> > *e:* granwi...@namhost.com
> > *m:* +264 81 323 1260 <+264813231260>
> > *w:* www.namhost.com
> >
> > <https://www.facebook.com/namhost> <https://twitter.com/namhost>
> > <https://www.instagram.com/namhostinternetservices/>
> > <https://www.linkedin.com/company/namhost>
> > <https://www.youtube.com/channel/UCTd5v-kVPaic_dguGur15AA>
> >
> > <https://www.namhost.com/your-move>
> >
> > Namhost Internet Services (Pty) Ltd ,
> >
> >                     24 Black Eagle Rd, Hermanus, 7210, RSA
> >
> >
> >
> > The content of this message is confidential. If you have received it
> > by mistake, please inform us by email reply and then delete the
> > message. It is forbidden to copy, forward, or in any way reveal the
> > contents of this message to anyone without our explicit consent. The
> > integrity and security of this email cannot be guaranteed over the
> > Internet. Therefore, the sender will not be held liable for any damage
> > caused by the message. For our full privacy policy and disclaimers,
> > please go to https://www.namhost.com/privacy-policy
> >
> >
>

Reply via email to