For on-prem images, we recommend using the NoCloud data source: https://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html On-prem images also support the AltCloud, ConfigDrive, and OVF cloud-init data sources. https://cloudinit.readthedocs.io/en/latest/topics/datasources.html#datasource-documentation The seed for NoCloud can be generated by writing two YAML files, meta-data and user-data, and making them part of an ISO image. This ISO needs to be attached to the virtual machine on first boot. meta-data sample: local-hostname: amazonlinux.onprem # eth0 is the default network interface enabled in the image. You can # configure static network settings with an entry like below. #network-interfaces: | # iface eth0 inet static # address 192.168.1.10 # network 192.168.1.0 # netmask 255.255.255.0 # broadcast 192.168.1.255 # gateway 192.168.1.254 user-data sample: #cloud-config # vim:syntax=yaml users: # A user by the name ec2-user is created in the image by default. - default # Following entry create user1 and assigns password specified in plain text. # Please not use of plain text password is not recommended from security best # practises standpoint - name: user1 groups: sudo sudo: ['ALL=(ALL) NOPASSWD:ALL'] plain_text_passwd: < plain text password here > lock_passwd: false # Following entry creates user2 and attaches a hashed passwd to the user. Hashed # passwords can be generated with: # python -c 'import crypt,getpass; print crypt.crypt(getpass.getpass())' - name: user2 passwd: < hashed password here > lock_passwd: false # Following entry creates user3, disables password based login and enables an SSH public key - name: user3 ssh-authorized-keys: - < ssh public key here > lock_passwd: true chpasswd: list: | ec2-user:< plain text password here > To build seed.iso: $ genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data