Tabla de contenido
Exemplos de ansible para gerir sistemas. Para modificar a configuração do OpenSSH-Server com ansible, primeiro é preciso criar um ficheiro playbooks.yml no diretório onde são armazenados os ficheiros ansible. O ficheiro playbooks.yml contém várias tarefas para serem executadas através do ansible:
Atualizar a configuração do servidor
Este código de ansible realiza várias tarefas:
name: Editando o ficheiro sshd_config
: define o nome da tarefa como “Editando o ficheiro sshd_config”.become: true
: indica que a tarefa deve ser executada com privilégios de superutilizador.lineinfile
: indica que o módulo lineinfile do ansible será utilizado, o qual permite editar linhas específicas de um ficheiro.dest: /etc/ssh/sshd_config
: especifica o ficheiro que será editado, neste caso o ficheiro de configuração do OpenSSH (/etc/ssh/sshd_config).regexp: "{{ item }}"
: especifica uma expressão regular que será utilizada para procurar a linha a ser editada no ficheiro. A variável item será substituída por cada um dos elementos da lista with_items.line: "{{ item }} {{ value }}"
: especifica a nova linha que será escrita no ficheiro. A variável item será substituída por cada um dos elementos da lista with_items e a variável value será substituída pelo valor associado a esse elemento.with_items
: especifica uma lista de pares chave-valor que serão processados num ciclo. Neste caso, a lista contém dois elementos:PermitRootLogin: no
ePasswordAuthentication: no
.
Este código procura as linhas PermitRootLogin
e PasswordAuthentication
no ficheiro /etc/ssh/sshd_config
e, se forem encontradas, modifica-as para que tenham o valor no. Se não forem encontradas, são adicionadas ao final do ficheiro. A tarefa é executada com privilégios de superutilizador e, portanto, é necessário fornecer a palavra-passe de superutilizador ou utilizar uma chave privada para autenticar-se.
- name: Editing_the_sshd_config_file become: true lineinfile: dest=/etc/ssh/sshd_config regexp="{{ item }}" line="{{ item }} {{ value }}" with_items: - PermitRootLogin: no - PasswordAuthentication: no
Reiniciar o servidor SSH
Este código de ansible realiza uma tarefa que tem como objetivo reiniciar o serviço de SSH (Secure Shell) e habilitá-lo para que se execute automaticamente no arranque do sistema. A tarefa é realizada com privilégios de superutilizador (become: true
).
Para levar a cabo a tarefa, é utilizado o módulo service
do ansible, que permite gerir serviços do sistema. Os parâmetros da tarefa são:
name: Rebooting_ssh_service
: define o nome da tarefa como “Reiniciando o serviço de ssh”.name=ssh
: especifica o nome do serviço que será gerido. Neste caso, trata-se do serviço de SSH.state=restarted
: indica que o serviço deve ser reiniciado.enabled=yes
: indica que o serviço deve ser habilitado para que se execute automaticamente no arranque do sistema.
Esta tarefa reinicia o serviço de SSH e habilita o serviço para que se execute automaticamente no arranque do sistema. É executada com privilégios de superutilizador e, portanto, é necessário fornecer a palavra-passe de superutilizador ou utilizar uma chave privada para autenticar-se.
- name: Rebooting_ssh_service become: true service : name=ssh state=restarted enabled=yes
Depois de guardarmos o ficheiro playbooks.yml, podemos executá-lo com o comando ansible-playbook. Isto diz ao ansible para executar todas as tarefas contidas nesse ficheiro para configurar e reiniciar o OpenSSH-Server.
Modificar a palavra-passe de um utilizador em Linux
Este código de ansible realiza uma tarefa que tem como objetivo alterar a palavra-passe do utilizador “admin”. A tarefa é realizada utilizando o módulo user do ansible, que permite gerir utilizadores do sistema. Os parâmetros da tarefa são:
name: Change_admin_user_password
: define o nome da tarefa como “Alterar a palavra-passe do utilizador admin”.name: admin
: especifica o nome do utilizador cuja palavra-passe será alterada.update_password: alway
: indica que a palavra-passe do utilizador deve ser sempre atualizada. Se a opção update_password não for especificada, o ansible não alterará a palavra-passe se já estiver definida.password: "{{ 'password123' | password_hash('sha512') }}"
especifica a nova palavra-passe do utilizador. Neste caso, é utilizado o filtro password_hash do ansible para gerar um hash da palavra-passe utilizando o algoritmo SHA-512. Isto é necessário já que o ansible armazena as palavras-passe dos utilizadores como hashes em vez de em texto claro, para evitar que sejam lidas por pessoas não autorizadas.
Esta tarefa altera a palavra-passe do utilizador “admin” para a palavra-passe “password123”. É utilizado o filtro password_hash para gerar um hash da palavra-passe utilizando o algoritmo SHA-512 e é estabelecida a opção update_password: always para forçar o ansible a atualizar sempre a palavra-passe.
Exemplo:
- name: Change_admin_user_password user: name: admin # Nombre de usuario a cambiar su password. update_password: always # Esta opción forzará a Ansible para actualizar siempre la contraseña del usuario en cuestión. # La longitud debe ser al menos 8 caracteres. password: "{{ 'password123' | password_hash('sha512') }}" # Esta línea es para establecer una contraseña segura.
Criar novos utilizadores com o ansible
Este código de ansible realiza uma tarefa que tem como objetivo criar um novo utilizador no sistema chamado “Bob”. A tarefa é realizada utilizando o módulo user
do ansible, que permite gerir utilizadores do sistema. Os parâmetros da tarefa são:
name: Create_a_new_user_named_Bob
: define o nome da tarefa como “Criar um novo utilizador chamado ‘Bob'”.name: Bob
: especifica o nome do novo utilizador que será criado.password: "{{ 'password123' | password_hash('sha512') }}"
: especifica a palavra-passe do novo utilizador. Neste caso, é utilizado o filtropassword_hash
do ansible para gerar um hash da palavra-passe utilizando o algoritmo SHA-512. Isto é necessário já que o ansible armazena as palavras-passe dos utilizadores como hashes em vez de em texto claro, para evitar que sejam lidas por pessoas não autorizadas.
Exemplo:
- name: Create_a_new_user_named_Bob # Nombre de la tarea en nuestro playbook. user: # Este es el módulo que vamos a utilizar para creación de usuarios. name: Bob # Nombre del usuario que vamos a crear. password: "{{ 'password123' | password_hash('sha512') }}" # Esta línea es para establecer una contraseña segura.
Resumindo, esta tarefa cria um novo utilizador chamado “Bob” com a palavra-passe “password123”. É utilizado o filtro password_hash
para gerar um hash da palavra-passe utilizando o algoritmo SHA-512. Se o utilizador “Bob” já existir, o ansible não realizará nenhuma ação.
Eliminar utilizadores em Linux com o ansible
Este código de ansible realiza uma tarefa que tem como objetivo eliminar o utilizador “Bob” do sistema. A tarefa é realizada utilizando o módulo user
do ansible, que permite gerir utilizadores do sistema. Os parâmetros da tarefa são:
name: Delete_Bob_user
: define o nome da tarefa como “Eliminar o utilizador ‘Bob'”.name: Bob
: especifica o nome do utilizador que será eliminado.state: absent
: indica que o utilizador deve ser eliminado. Se a opçãostate
não for especificada, o ansible assume que se quer criar o utilizador.
Esta tarefa elimina o utilizador “Bob” do sistema. Se o utilizador “Bob” não existir, o ansible não realizará nenhuma ação. É importante ter em conta que esta tarefa não elimina os ficheiros ou diretórios pertencentes ao utilizador “Bob”. Se se querem eliminar também estes elementos, é necessário utilizar outras tarefas ou módulos do ansible.
Exemplo:
- name: Delete_Bob_user # Nombre de la tarea en nuestro playbook. user: # Este es el módulo que vamos a utilizar para eliminar usuarios. name: Bob # Nombre del usuario que vamos a eliminar. state: absent # Esta opción indica al módulo de Ansible que queremos eliminar al usuario en cuestión.
Atualizar PHP
Para atualizar o PHP para a versão 8.2 utilizando o ansible, podes utilizar o seguinte código:
---
# Este es un ejemplo de cómo utilizar Ansible para actualizar PHP
# a la versión 8.2 si está instalada una versión inferior.
- name: php_version_check
command: php -v
register: result
- name: upgrade_php_to_8.2
become: true
apt:
name: "{{ packages }}"
state: latest
vars:
packages:
- php8.2
when: result.stdout | version_compare('8.2', '<')
- Na primeira tarefa, o comando
php -v
é executado para obter informações sobre a versão do PHP instalada no sistema. A saída do comando é armazenada na variávelresult
. - Na segunda tarefa, o módulo
apt
do ansible é utilizado para atualizar os pacotes do PHP para a versão mais recente disponível. O móduloapt
será executado com privilégios de superusuário (become: true
) e o pacotephp8.2
(que é a versão 8.2 do PHP) será instalado. - A opção
when
é usada para especificar que a tarefa de atualização do PHP só será executada se a versão do PHP instalada for anterior à versão 8.2. Para isso, é usado o filtroversion_compare
do ansible, que compara a versão do PHP obtida com o comandophp -v
(armazenada na variávelresult
) com a versão 8.2 e retornatrue
se for anterior.
É importante lembrar que este código assume que o pacote php8.2
está disponível no repositório de pacotes utilizado pelo sistema e que o pacote atual do php
foi instalado através de um pacote de distribuição (como apt
ou yum
). Se isso não for o caso, pode ser necessário fazer algumas alterações no código para adaptá-lo ao seu ambiente.
Atualizar Python
Para atualizar o Python para a versão 3.11 usando ansible, você pode usar o seguinte código:
---
# Este es un ejemplo de cómo utilizar ansible para actualizar Python
# a la versión 3.11 si está instalada una versión inferior.
- name: python_version_check
command: python3 --version
register: result
- name: upgrade_python_to_3.11
become: true
package:
name: "{{ packages }}"
state: latest
vars:
packages:
- python3.11
when: result.stdout | version_compare('3.11', '<')
Explicación do código:
- Na primeira tarefa, o comando python3 –version é executado para obter informações sobre a versão do Python 3 instalada no sistema. A saída do comando é armazenada na variável result.
- Na segunda tarefa, o módulo package do ansible é usado para atualizar o pacote do Python para a versão mais recente disponível. O módulo package será executado com privilégios de superusuário (become: true) e o pacote python3.11 (que é a versão 3.11 do Python) será instalado.
- A opção when é usada para especificar que a tarefa de atualização do Python só será executada se a versão do Python instalada for anterior à versão 3.11. Para isso, o filtro version_compare do ansible é usado, comparando a versão do Python obtida com o comando python3 –version (armazenada na variável result) com a versão 3.11 e retornando true se for anterior.
Assim como no código acima para o PHP, é importante lembrar que este código assume que o pacote python3.11 está dispon
Explicación del código:
- En la primera tarea, se ejecuta el comando
python3 --version
para obtener información sobre la versión de Python 3 instalada en el sistema. La salida del comando se almacena en la variableresult
. - En la segunda tarea, se utiliza el módulo
package
de ansible para actualizar el paquete de Python a la última versión disponible. El módulopackage
se ejecutará con privilegios de superusuario (become: true
) y se instalará el paquetepython3.11
(que es la versión 3.11 de Python). - La opción
when
se utiliza para especificar que la tarea de actualización de Python solo se ejecutará si la versión de Python instalada es anterior a la versión 3.11. Para ello, se utiliza el filtroversion_compare
de ansible, que compara la versión de Python obtenida con el comandopython3 --version
(almacenada en la variableresult
) con la versión 3.11 y devuelvetrue
si es anterior.
Do mesmo modo que no código acima, lembre-se de que este código supõe que o pacote python3.11 está disponível no repositório de pacotes utilizado pelo sistema e que o pacote python3 atual foi instalado através de um pacote de distribuição (como apt ou yum). Se isso não for o caso, é possível que seja necessário fazer algumas alterações no código para adaptá-lo ao seu ambiente.