Login
Login
Atualizado em 30 de January de 2026

O cloud-init é uma ferramenta de configuração de servidores em nuvem que permite passar parâmetros do usuário ao inicializar uma máquina virtual.

O cloud-init permite passar parâmetros do usuário (user-data) durante a inicialização de uma máquina virtual, acelerando e automatizando o processo de configuração do servidor.

Com o cloud-init, você pode personalizar a configuração do servidor, instalar softwares, criar diretórios e usuários, gerenciar acessos e muito mais.

Formatos

Você pode enviar scripts de cloud-init como arquivos de texto #cloud-config ou como scripts shell #!/bin/sh.

Ao usar scripts shell, tenha em mente:

  • O script shell será automaticamente convertido em cloud-config usando a diretiva runcmd.

  • runcmd é executado apenas uma vez. Se você editar o script e reiniciar o servidor, ele não será executado novamente.

  • Se você precisar executar o script a cada boot, use scripts cloud-config com a diretiva bootcmd.

Observações importantes

  • Os scripts são executados como root, portanto não é necessário adicionar sudo aos comandos.

  • Todos os arquivos e diretórios criados pertencerão ao usuário root. Se você quiser que outro usuário tenha acesso, defina as permissões apropriadas no script.

  • O script é executado automaticamente, portanto não é possível usar comandos que exigem interação do usuário. Para comandos que pedem confirmação, utilize a flag -y (por exemplo, apt upgrade -y).

  • O log de execução do script é gravado no arquivo /var/log/cloud-init-output.log.

  • Ao usar imagens de servidor de terceiros, o cloud-init pode não funcionar corretamente.

  • No Ubuntu, o cloud-init cria o usuário ubuntu por padrão se não houver a diretiva users. Para evitar isso, use a diretiva: users: [].

Enviando o script

Você pode enviar o script de cloud-init:

1c39d9ac 8d10 455a 9e72 8c45e2cc1e19

  • Ao reinstalar o servidor. Os parâmetros serão aplicados durante a instalação.

  • No reboot. Nesse caso, você pode enviar o script na seção Plano e depois reiniciar o servidor. Para que os parâmetros sejam aplicados, é necessário reiniciar o sistema com o comando: cloud-init clean --reboot.

Editando o script

Você pode modificar o script de cloud-init já enviado nas configurações do servidor.

Para que os parâmetros atualizados sejam aplicados no próximo reboot, é necessário reiniciar o sistema com o comando:

cloud-init clean --reboot

Passos:

  1. Vá até a aba Plano.

  2. Clique em Editar no bloco Cloud-init.

  3. Faça as alterações e salve.

O script será aplicado na próxima reinicialização do servidor.

Exemplos de cloud-config

O arquivo deve começar com #cloud-config na primeira linha.

Instalando pacotes

#cloud-config
package_update: true
packages:
 - apache2
 - mariadb-server
 - mariadb-client

Criando usuários

#cloud-config
users:
  - name: username
  - name: new_username

Adicionando chaves SSH

#cloud-config
ssh_authorized_keys:
  - ssh-rsa PUBLIC_KEY username@server

Você pode adicionar várias chaves de uma vez:

#cloud-config
ssh_authorized_keys:
  - ssh-rsa PUBLIC_KEY username@server
  - ssh-rsa PUBLIC_KEY_2 username2@desktop

Criando um usuário sudo, adicionando chaves SSH e configurando o shell bash

#cloud-config
users:
  - name: username
    groups: sudo
    shell: /bin/bash
    sudo: ['ALL=(ALL) NOPASSWD:ALL']
    ssh-authorized-keys:
      - PUBLIC_KEY username@server
      - PUBLIC_KEY_2 username2@desktop

Instalando LAMP no Ubuntu

#cloud-config
package_update: true
packages:
  - apache2
  - php-mysql
  - mysql-server
  - libapache2-mod-php
  - php-gd
  - php-curl
runcmd:
  - [ find, /var/www, -type, d, -exec, chmod, 2775, {}, \; ]
  - [ find, /var/www, -type, f, -exec, chmod, 0664, {}, \; ]
write_files:
  - path: /var/www/html/phpinfo.php
    owner: www-data:www-data
    content: |
      ""

Após a conclusão da configuração, o link http://server_ip/phpinfo.php exibirá uma página com os parâmetros do PHP.

Mais exemplos podem ser encontrados na documentação do cloud-init.

Exemplos de scripts shell

O script deve começar com #!/bin/sh na primeira linha.

Instalando pacotes

#!/bin/sh
apt -y update
apt -y install fail2ban

Instalando LAMP no CentOS

#!/bin/sh
##Installing PHP 7.2
yum -y install epel-release
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php72
yum update -y
yum install -y php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-process php-ldap php-mbstring
##Installing MariaDB 11.02
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
chmod +x mariadb_repo_setup
bash mariadb_repo_setup
yum install -y httpd mariadb-server
##Enabling the services
systemctl start mariadb
systemctl enable mariadb
systemctl start httpd
systemctl enable httpd
##Setting permissions
chmod 2775 /var/www
find /var/www -type d -exec chmod 2775 {} \;
find /var/www -type f -exec chmod 0664 {} \;
## Outputting phpinfo
echo "" > /var/www/html/phpinfo.php
## Opening the port
iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
Esta página foi útil?
Atualizado em 30 de January de 2026

Tem perguntas,
comentários ou preocupações?

Nossos profissionais estão disponíveis para ajudá-lo a qualquer momento,
seja para assistência ou apenas se você não souber por onde começar.
Envie-nos um e-mail
Hostman's Support