Documentation

    cloud_init

    Manage cloud-init configuration for cloud instance initialization.

    Cloud-init is the industry-standard multi-distro method for cross-platform cloud instance initialization. This module manages cloud-init configuration files, user-data, meta-data, and network configuration.

    Attributes

    check_mode:
      support: full
    

    Parameters

    Parameter Required Type Values Description
    backup   boolean   Create backup of existing config files before modifying. [default: false]
    directory   string   Path to the cloud-init configuration directory. [default: "/etc/cloud"]
    meta_data_path   string   Path to write meta-data file. [default: "/var/lib/cloud/instance/meta-data"]
    network_config_path   string   Path to write network config file. [default: "/var/lib/cloud/instance/network-config"]
    state   string present
    absent
    updated
    Whether the configuration should exist or not. updated will only apply changes if the configuration differs. [default: "present"]
    user_data_content   string   Raw user-data content string. Used as-is if provided (should start with #cloud-config).
    user_data_path   string   Path to write user-data file. [default: "/var/lib/cloud/instance/user-data"]

    Examples

    - name: Configure cloud-init user-data
      cloud_init:
        state: present
        user_data:
          users:
            - name: admin
              sudo: ALL=(ALL) NOPASSWD:ALL
              shell: /bin/bash
          packages:
            - nginx
            - curl
          runcmd:
            - systemctl enable nginx
            - systemctl start nginx
    
    - name: Configure cloud-init with network config
      cloud_init:
        state: present
        network_config:
          version: 2
          ethernets:
            eth0:
              dhcp4: true
    
    - name: Set instance metadata
      cloud_init:
        state: present
        meta_data:
          instance-id: i-12345678
          local-hostname: web01
    
    - name: Remove cloud-init configuration
      cloud_init:
        state: absent
    
    - name: Write user-data from raw content
      cloud_init:
        state: present
        user_data_content: |
          #cloud-config
          users:
            - name: deploy
              groups: sudo