Updated on 2022-07-12 GMT+08:00

Cloud-Init 0.7.9 or later

  1. Add the following key-value pair with an empty line above and below it:
    no_ssh_fingerprints: true
  2. Set ssh_pwauth to false or 0, indicating that password login in SSH mode is disabled.
    ssh_pwauth: false
  3. Set disable_root to false. This parameter specifies whether to allow SSH login of user root.
    disable_root: true
  4. Add preserve_hostname: false.
    preserve_hostname: false
  5. (Optional) Use the number sign (#) to comment out the following statements (skip this step if the statements do not exist):
    mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']
    resize_rootfs_tmp: /dev
    ssh_deletekeys:   0
  6. Modify ssh_genkeytypes as follows (add it if it does not exist):
    ssh_genkeytypes: ['rsa', 'dsa']
  7. Modify syslog_fix_perms as follows (add it if it does not exist):
    syslog_fix_perms: root:root
  8. Add the following statements:
    network:
       config: disabled
    datasource_list: [ OpenStack ]
    datasource:
      OpenStack:
        metadata_urls: ['http://169.254.169.254']
        max_wait: 120
        timeout: 10
        retries: 5
  9. (Optional) In /etc/cloud/cloud.cfg, set apply_network_config to False.

    This step is only for Cloud-Init 18.3 or later.

  10. Add the following content after - final-message in cloud_final_modules:
    - power-state-change
  11. Modify system_info as follows:
    system_info:
       distro: rhel
       default_user:
          name: linux  //Username for OS login
          lock_passwd: True   //True indicates that login using a password is disabled. Note that some OSs use value 1 to disable the password login.

    In the preceding command, change the value of distro based on the OS, such as distro: sles, distro: rhel, distro: ubuntu, distro: debian, and dustro: fedora.

  12. (Optional) For SUSE 12 SP1 and SUSE 12 SP2, modify [Unit] in the /usr/lib/systemd/system/cloud-init-local.service file.

    vi /usr/lib/systemd/system/cloud-init-local.service

    Ensure that [Unit] is configured as follows:

    [Unit]
    Description=Initial cloud-init job (pre-networking)
    DefaultDependencies=no
    Wants=network-pre.target
    Wants=local-fs.target
    After=local-fs.target
    Before=network-pre.target
    Before=shutdown.target
    Before=basic.target
    Conflicts=shutdown.target
    # Other distros use Before=sysinit.target. There is not a clearly identified
    # reason for usage of basic.target instead.
  13. (Optional) For Ubuntu 16.04, run the following command to configure the OpenStack source:

    dpkg-reconfigure cloud-init

    Run the vim /etc/cloud/cloud.cfg.d/90_dpkg.cfg command to open the configuration file and check whether the items are correctly configured in the file.

    # to update this file, run dpkg-reconfigure cloud-init
    datasource_list: [ OpenStack ]
    ~
    ~
    ~

    If the configuration file content is consistent with the preceding command output, the configuration is successful.