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: noePasswordAuthentication: no.
Este código procura as linhas PermitRootLogine PasswordAuthenticationno ficheiro /etc/ssh/sshd_confige, 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_hashdo 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çãostatenã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
aptdo ansible é utilizado para atualizar os pacotes do PHP para a versão mais recente disponível. O móduloaptserá 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_comparedo ansible, que compara a versão do PHP obtida com o comandophp -v(armazenada na variávelresult) com a versão 8.2 e retornatruese 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 aptou 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 --versionpara 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
packagede ansible para actualizar el paquete de Python a la última versión disponible. El módulopackagese 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
whense 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_comparede ansible, que compara la versión de Python obtenida con el comandopython3 --version(almacenada en la variableresult) con la versión 3.11 y devuelvetruesi 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.