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