Tarefas de administração e configuração usando as funções do sistema no RHEL

Red Hat Enterprise Linux 8

Aplicação das funções do sistema RHEL usando os playbooks da Plataforma de Automação Possível da Red Hat para realizar tarefas de administração do sistema

Resumo

Este documento descreve a configuração das funções do sistema usando o Ansible on Red Hat Enterprise Linux 8. O título enfoca: as funções do sistema RHEL são uma coleção de funções, módulos e playbooks Ansíveis que fornecem uma interface de configuração estável e consistente para gerenciar e configurar o Red Hat Enterprise Linux. Eles são projetados para serem compatíveis com múltiplas versões de versões principais do Red Hat Enterprise Linux 8.

Tornando o código aberto mais inclusivo

A Red Hat tem o compromisso de substituir a linguagem problemática em nosso código, documentação e propriedades da web. Estamos começando com estes quatro termos: master, slave, blacklist e whitelist. Por causa da enormidade deste esforço, estas mudanças serão implementadas gradualmente ao longo de vários lançamentos futuros. Para mais detalhes, veja a mensagem de nosso CTO Chris Wright.

Fornecendo feedback sobre a documentação da Red Hat

Agradecemos sua contribuição em nossa documentação. Por favor, diga-nos como podemos melhorá-la. Para fazer isso:

  • Para comentários simples sobre passagens específicas:

    1. Certifique-se de que você está visualizando a documentação no formato Multi-page HTML. Além disso, certifique-se de ver o botão Feedback no canto superior direito do documento.
    2. Use o cursor do mouse para destacar a parte do texto que você deseja comentar.
    3. Clique no pop-up Add Feedback que aparece abaixo do texto destacado.
    4. Siga as instruções apresentadas.
  • Para enviar comentários mais complexos, crie um bilhete Bugzilla:

    1. Ir para o site da Bugzilla.
    2. Como Componente, use Documentation.
    3. Preencha o campo Description com sua sugestão de melhoria. Inclua um link para a(s) parte(s) relevante(s) da documentação.
    4. Clique em Submit Bug.

Capítulo 1. Começando com os papéis do Sistema RHEL

Esta seção explica quais são os papéis do Sistema RHEL. Além disso, descreve como aplicar um determinado papel através de um caderno de atividades para realizar várias tarefas administrativas do sistema.

1.1. Introdução aos papéis do sistema RHEL

O Sistema RHEL Roles é um conjunto de funções e módulos possíveis. As funções do sistema RHEL fornecem uma interface de configuração para gerenciar remotamente vários sistemas RHEL. A interface permite gerenciar configurações de sistema através de múltiplas versões do RHEL, bem como adotar novas versões principais.

No Red Hat Enterprise Linux 8, a interface atualmente consiste nas seguintes funções:

  • kdump
  • rede
  • selinux
  • armazenagem
  • certificado
  • kernel_settings
  • madeireiro
  • métricas
  • nbde_client e nbde_server
  • timesync
  • tlog

Todas essas funções são fornecidas pelo pacote rhel-system-roles disponível no repositório AppStream.

Recursos adicionais

1.2. Terminologia dos papéis do Sistema RHEL

Você pode encontrar os seguintes termos ao longo desta documentação:

Terminologia dos papéis do sistema

Livro de jogo possível
Os playbooks são a linguagem de configuração, implantação e orquestração do Ansible. Eles podem descrever uma política que você quer que seus sistemas remotos apliquem, ou um conjunto de passos em um processo geral de TI.
Nó de controle
Qualquer máquina com Ansible instalado. Você pode executar comandos e playbooks, invocando /usr/bin/ansible ou /usr/bin/ansible-playbook, a partir de qualquer nó de controle. Você pode usar qualquer computador que tenha o Python instalado nele como um nó de controle - laptops, desktops compartilhados e servidores podem todos rodar o Ansible. Entretanto, você não pode usar uma máquina Windows como nó de controle. Você pode ter múltiplos nós de controle.
Inventário
Uma lista de nós administrados. Um arquivo de inventário também é às vezes chamado de "arquivo hospedeiro". Seu inventário pode especificar informações como endereço IP para cada nó gerenciado. Um inventário também pode organizar nós administrados, criando e aninhando grupos para facilitar o escalonamento. Para saber mais sobre o inventário, consulte a seção Trabalhando com o inventário.
Nós administrados
Os dispositivos de rede, servidores, ou ambos que você administra com Ansible. Os nós gerenciados também são às vezes chamados de "hosts". O Ansible não é instalado em nós gerenciados.

1.3. Aplicando um papel

O procedimento a seguir descreve como aplicar uma função específica.

Pré-requisitos

  • O pacote rhel-system-roles está instalado no sistema que você deseja usar como um nó de controle:

    # yum install rhel-system-roles
  • O repositório Ansible Engine está habilitado, e o pacote ansible está instalado no sistema que você deseja usar como um nó de controle. Você precisa do pacote ansible para executar playbooks que usam os papéis do sistema RHEL.

    • Se você não tiver uma assinatura do Red Hat Ansible Engine, você pode usar uma versão suportada limitada do Red Hat Ansible Engine fornecida com sua assinatura do Red Hat Enterprise Linux. Neste caso, siga estes passos:

      1. Habilitar o repositório RHEL Ansible Engine:

        # subscription-manager refresh
        # subscription-manager repos --enable ansible-2-for-rhel-8-x86_64-rpms
      2. Instalar Motor Possível:

        # yum install ansible
    • Se você tem uma assinatura de Red Hat Ansible Engine, siga o procedimento descrito em Como faço para baixar e instalar o Red Hat Ansible Engine?
  • Você é capaz de criar um livro de brincadeiras possível.

    Os playbooks representam a linguagem de configuração, implantação e orquestração do Ansible. Usando playbooks, você pode declarar e gerenciar configurações de máquinas remotas, implantar várias máquinas remotas ou etapas de orquestração de qualquer processo encomendado manualmente.

    Um playbook é uma lista de um ou mais plays. Cada play pode incluir variáveis, tarefas ou papéis possíveis.

    Os livros didáticos são legíveis por humanos e são expressos no formato YAML.

    Para mais informações sobre livros didáticos, consulte Documentação possível.

Procedimento

  1. Crie um caderno de atividades, incluindo o papel necessário.

    O exemplo a seguir mostra como usar os papéis através da opção roles: para um determinado play:

    ---
    - hosts: webservers
      roles:
         - rhel-system-roles.network
         - rhel-system-roles.timesync

    Para mais informações sobre o uso de papéis em livros didáticos, consulte Documentação possível.

    Veja Exemplos possíveis, por exemplo, livros didáticos.

    Nota

    Cada função inclui um arquivo README, que documenta como utilizar a função e os valores dos parâmetros suportados. Você também pode encontrar um exemplo de playbook para um determinado papel sob o diretório de documentação do papel. Tal diretório de documentação é fornecido por padrão com o pacote rhel-system-roles, e pode ser encontrado no local a seguir:

    /usr/share/doc/rhel-system-roles/SUBSYSTEM/

    Substituir SUBSYSTEM pelo nome da função requerida, como selinux, kdump, network, timesync, ou storage.

  2. Verificar a sintaxe do playbook:

    # ansible-playbook --syntax-check name.of.the.playbook

    O comando ansible-playbook oferece uma opção --syntax-check que você pode usar para verificar a sintaxe de um playbook.

  3. Executar o playbook nos anfitriões-alvo executando o comando ansible-playbook:

    # ansible-playbook -i name.of.the.inventory name.of.the.playbook

    Um inventário é uma lista de sistemas contra os quais o Ansible funciona. Para mais informações sobre como criar e inventariar, e como trabalhar com ele, consulte a documentação do Ansible.

    Se você não tiver um inventário, você pode criá-lo no momento da execução ansible-playbook:

    Se você tiver apenas um anfitrião específico contra o qual você deseja executar o playbook, use:

    # ansible-playbook -i host1, name.of.the.playbook

    Se você tiver vários anfitriões alvo contra os quais você deseja executar o livro de jogo, use:

    # ansible-playbook -i host1,host2,....,hostn name.of.the.playbook

Recursos adicionais

  • Para obter informações mais detalhadas sobre o uso do comando ansible-playbook, consulte a página de manual ansible-playbook.

1.4. Recursos adicionais

Capítulo 2. Instalação das funções do sistema RHEL

Antes de começar a usar as funções do sistema, você deve instalá-lo em seu sistema.

2.1. Instalação de funções do sistema RHEL em seu sistema

Este parágrafo é a introdução do módulo de procedimento: uma breve descrição do procedimento.

Pré-requisitos

Procedimento

  1. Instale o pacote rhel-system-roles no sistema que você deseja usar como nó de controle:

    # yum instalar rhel-system-roles

    Se você não tiver uma assinatura do Red Hat Ansible Engine, você pode usar uma versão suportada limitada do Red Hat Ansible Engine fornecida com sua assinatura do Red Hat Enterprise Linux. Neste caso, siga estes passos:

    1. Habilitar o repositório RHEL Ansible Engine:

      # subscription-manager refresh
      
      # subscription-manager repos --enable ansible-2-for-rhel-8-x86_64-rpms
    2. Instalar Motor Possível:

      # yum instalar possível

Como resultado, você é capaz de criar um livro de brincadeiras possível.

Recursos adicionais

Capítulo 3. Utilização de funções possíveis para configurar permanentemente os parâmetros do kernel

Como um usuário experiente com bom conhecimento do Red Hat Ansible Engine, você pode usar a função kernel_settings para configurar os parâmetros do kernel em múltiplos clientes ao mesmo tempo. Esta solução:

  • Fornece uma interface amigável com ajuste de entrada eficiente.
  • Mantém todos os parâmetros de kernel pretendidos em um só lugar.

Após executar a função kernel_settings a partir da máquina de controle, os parâmetros do núcleo são aplicados imediatamente aos sistemas gerenciados e persistem em todas as reinicializações.

3.1. Introdução ao papel das configurações do kernel

As funções do Sistema RHEL são uma coleção de funções e módulos da Plataforma de Automação Possível que fornecem uma interface de configuração consistente para gerenciar remotamente vários sistemas.

As funções do sistema RHEL foram introduzidas para configurações automatizadas do kernel usando a função do sistema kernel_settings. O pacote rhel-system-roles contém esta função do sistema, e também a documentação de referência.

Para aplicar os parâmetros do kernel em um ou mais sistemas de forma automatizada, use a função kernel_settings com uma ou mais de suas variáveis de papel de sua escolha em um playbook. Um playbook é uma lista de uma ou mais peças que são legíveis por humanos, e são escritas no formato YAML.

Você pode usar um arquivo de inventário para definir um conjunto de sistemas que você deseja que o Ansible Engine configure de acordo com o playbook.

Com a função kernel_settings você pode configurar:

  • Os parâmetros do kernel usando a variável de função kernel_settings_sysctl
  • Vários subsistemas de kernel, dispositivos de hardware e drivers de dispositivos usando a variável de função kernel_settings_sysfs
  • A afinidade da CPU para o gerente de serviços systemd e processa-a forquilha usando a variável de função kernel_settings_systemd_cpu_affinity
  • O subsistema de memória do kernel hugepages transparentes usando as variáveis de função kernel_settings_transparent_hugepages e kernel_settings_transparent_hugepages_defrag

Recursos adicionais

  • Para uma referência detalhada sobre as variáveis de papel kernel_settings e para os exemplos de playbooks, instale o pacote rhel-system-roles e consulte os arquivos README.md e README.html no diretório /usr/share/doc/rhel-system-roles/kernel_settings/.
  • Para mais informações sobre playbooks, consulte Trabalhando com playbooks na documentação Ansible.
  • Para mais informações sobre como criar e usar inventários, veja Como construir seu inventário em Documentação possível.

3.2. Aplicação de parâmetros selecionados do kernel usando a função de configuração do kernel

Siga estas etapas para preparar e aplicar um livro de exercícios possível para configurar remotamente os parâmetros do kernel com efeito persistente em múltiplos sistemas operacionais gerenciados.

Pré-requisitos

  • Sua assinatura do Red Hat Ansible Engine está anexada ao sistema, também chamado control machine, a partir do qual você deseja executar o papel kernel_settings. Veja o artigo Como faço o download e instalo o Red Hat Ansible Engine para mais informações.
  • O possível repositório do motor está habilitado na máquina de controle.
  • O Motor Possível é instalado na máquina de controle.

    Nota

    Você não precisa ter o Ansible Engine instalado nos sistemas, também chamado managed hosts, onde você deseja configurar os parâmetros do kernel.

  • O pacote rhel-system-roles está instalado na máquina de controle.
  • Um inventário de hosts gerenciados está presente na máquina de controle e o Ansible Engine é capaz de se conectar a eles.

Procedimento

  1. Opcionalmente, revisar o arquivo inventory para fins de ilustração:

    #  cat /home/jdoe/<ansible_project_name>/inventory
    [testingservers]
    pdoe@192.168.122.98
    fdoe@192.168.122.226
    
    [db-servers]
    db1.example.com
    db2.example.com
    
    [webservers]
    web1.example.com
    web2.example.com
    192.0.2.42

    O arquivo define o grupo [testingservers] e outros grupos. Ele permite rodar o Ansible Engine de forma mais eficaz contra uma coleção específica de sistemas.

  2. Criar um arquivo de configuração para definir padrões e escalonamento de privilégios para operações de Motores Ansíveis.

    1. Criar um novo arquivo YAML e abri-lo em um editor de texto, por exemplo:

      #  vi /home/jdoe/<ansible_project_name>/ansible.cfg
    2. Insira o seguinte conteúdo no arquivo:

      [defaults]
      inventory = ./inventory
      
      [privilege_escalation]
      become = true
      become_method = sudo
      become_user = root
      become_ask_pass = true

      A seção [defaults] especifica um caminho para o arquivo do inventário de anfitriões gerenciados. A seção [privilege_escalation] define que os privilégios do usuário sejam transferidos para root nos hosts gerenciados especificados. Isto é necessário para uma configuração bem sucedida dos parâmetros do kernel. Quando o Ansible playbook for executado, você será solicitado a fornecer a senha do usuário. O usuário muda automaticamente para root por meio de sudo após conectar-se a um host gerenciado.

  3. Criar um caderno de atividades que utilize o papel kernel_settings.

    1. Criar um novo arquivo YAML e abri-lo em um editor de texto, por exemplo:

      #  vi /home/jdoe/<ansible_project_name>/kernel_roles.yml

      Este arquivo representa um playbook e geralmente contém uma lista ordenada de tarefas, também chamada plays, que são executadas contra hosts gerenciados específicos selecionados a partir de seu arquivo inventory.

    2. Insira o seguinte conteúdo no arquivo:

      ---
      - name: Configure kernel settings
        hosts: testingservers
      
        vars:
          kernel_settings_sysctl:
            - name: fs.file-max
              value: 400000
            - name: kernel.threads-max
              value: 65536
          kernel_settings_sysfs:
            - name: /sys/class/net/lo/mtu
              value: 65000
          kernel_settings_transparent_hugepages: madvise
      
        roles:
          - linux-system-roles.kernel_settings

      A chave name é opcional. Ela associa uma corda arbitrária com a peça como um rótulo e identifica para que serve a peça. A chave hosts na peça especifica os anfitriões contra os quais a peça é encenada. O valor ou valores para esta chave podem ser fornecidos como nomes individuais de anfitriões gerenciados ou como grupos de anfitriões, conforme definido no arquivo inventory.

      A seção vars representa uma lista de variáveis contendo nomes de parâmetros e valores de kernel selecionados para os quais eles têm que ser definidos.

      A chave roles especifica qual papel do sistema irá configurar os parâmetros e valores mencionados na seção vars.

      Nota

      Você pode modificar os parâmetros do kernel e seus valores no playbook para atender às suas necessidades.

  4. Opcionalmente, verifique se a sintaxe em sua peça está correta.

    #  ansible-playbook --syntax-check kernel-roles.yml
    
    playbook: kernel-roles.yml

    Este exemplo mostra a verificação bem sucedida de um livro de brincadeiras.

  5. Execute seu livro de brincadeiras.

    #  ansible-playbook kernel-roles.yml
    BECOME password:
    
    PLAY [Configure kernel settings]  ... PLAY RECAP **
    fdoe@192.168.122.226       : ok=10   changed=4    unreachable=0    failed=0    skipped=6    rescued=0    ignored=0
    pdoe@192.168.122.98        : ok=10   changed=4    unreachable=0    failed=0    skipped=6    rescued=0    ignored=0

    Antes do Ansible Engine executar seu playbook, você será solicitado a obter sua senha e para que um usuário em hosts gerenciados possa ser trocado para root, o que é necessário para configurar os parâmetros do kernel.

    A seção recapitulativa mostra que a peça terminou com sucesso (failed=0) para todos os anfitriões gerenciados, e que 4 parâmetros do kernel foram aplicados (changed=4).

  6. Reinicie seus anfitriões gerenciados e verifique os parâmetros do núcleo afetado para verificar se as mudanças foram aplicadas e persistem em todas as reinicializações.

Recursos adicionais

  • Para mais informações sobre as funções do Sistema RHEL, consulte Introdução às funções do Sistema RHEL.
  • Para mais informações sobre todas as variáveis atualmente suportadas em kernel_settings, consulte os arquivos README.html e README.md no diretório /usr/share/doc/rhel-system-roles/kernel_settings/.
  • Para mais detalhes sobre Inventários Ansíveis, consulte Trabalhando com Inventário em Documentação Possível.
  • Para obter mais detalhes sobre os arquivos de configuração de Ansible, consulte Configuring Ansible in Ansible documentation.
  • Para mais detalhes sobre Playbooks Ansíveis, consulte Trabalhando com Playbooks na documentação Ansible.
  • Para obter mais detalhes sobre Variáveis Ansíveis, consulte Utilização de Variáveis em Documentação Possível.
  • Para mais detalhes sobre os papéis possíveis, consulte Papéis em documentação possível.

Capítulo 4. Utilização de funções do sistema para configurar conexões de rede

A função do sistema network na RHEL permite aos administradores automatizar a configuração e tarefas de gerenciamento relacionadas à rede usando o Ansible.

4.1. Configuração de uma conexão Ethernet

Esta seção descreve diferentes maneiras de configurar uma conexão Ethernet com endereços IP estáticos e dinâmicos.

4.1.1. Configuração de uma conexão Ethernet estática usando as funções do sistema RHEL

Este procedimento descreve como usar as funções do Sistema RHEL para adicionar remotamente uma conexão Ethernet para a interface enp7s0 com as seguintes configurações, executando um livro de exercícios possível:

  • Um endereço IPv4 estático - 192.0.2.1 com uma máscara de sub-rede /24
  • Um endereço IPv6 estático - 2001:db8:1::1 com uma máscara de sub-rede /64
  • Um gateway padrão IPv4 - 192.0.2.254
  • Um gateway padrão IPv6 - 2001:db8:1::fffe
  • Um servidor DNS IPv4 - 192.0.2.200
  • Um servidor DNS IPv6 - 2001:db8:1::ffbb
  • Um domínio de busca DNS - example.com

Execute este procedimento no Nó de controle possível.

Pré-requisitos

  • Os pacotes ansible e rhel-system-roles estão instalados no nó de controle.
  • Se você usar um usuário remoto diferente de root ao executar o playbook, este usuário tem as permissões apropriadas sudo no nó gerenciado.
  • O anfitrião usa o NetworkManager para configurar a rede.

Procedimento

  1. Se o anfitrião no qual você deseja executar as instruções no playbook ainda não estiver inventariado, adicione o IP ou nome deste anfitrião ao arquivo /etc/ansible/hosts Inventário possível:

    node.example.com
  2. Crie o playbook ~/ethernet-static-IP.yml com o seguinte conteúdo:

    ---
    - name: Configure an Ethernet connection with static IP
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: linux-system-roles.network
    
        vars:
          network_connections:
            - name: enp7s0
              type: ethernet
              autoconnect: yes
              ip:
                address:
                  - 192.0.2.1/24
                  - 2001:db8:1::1/64
                gateway4: 192.0.2.254
                gateway6: 2001:db8:1::fffe
                dns:
                  - 192.0.2.200
                  - 2001:db8:1::ffbb
                dns_search:
                  - example.com
              state: up
  3. Execute o livro de brincadeiras:

    • Para se conectar como usuário root ao host gerenciado, entre:

      # ansible-playbook -u root ~/ethernet-static-IP.yml
    • Para conectar-se como usuário ao host administrado, entre:

      # ansible-playbook -u user_name --ask-become-pass ~/ethernet-static-IP.yml

      A opção --ask-become-pass garante que o comando ansible-playbook solicita a senha sudo do usuário definido no -u user_name opção.

    Se você não especificar o -u user_name ansible-playbook se conecta ao host gerenciado como o usuário que está atualmente conectado ao nó de controle.

Recursos adicionais

  • Para detalhes sobre os parâmetros usados em network_connections e para informações adicionais sobre o Sistema de Papel network, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.network/README.md.
  • Para obter detalhes sobre o comando ansible-playbook, consulte a página de manual ansible-playbook(1).

4.1.2. Configuração de uma conexão Ethernet dinâmica usando as funções do sistema RHEL

Este procedimento descreve como usar as funções do Sistema RHEL para adicionar remotamente uma conexão Ethernet dinâmica para a interface enp7s0, executando um livro de exercícios possível. Com esta configuração, a conexão de rede solicita as configurações IP para esta conexão a partir de um servidor DHCP. Execute este procedimento no nó de controle do Ansible control.

Pré-requisitos

  • Um servidor DHCP está disponível na rede.
  • Os pacotes ansible e rhel-system-roles estão instalados no nó de controle.
  • Se você usar um usuário remoto diferente de root ao executar o playbook, este usuário tem as permissões apropriadas sudo no nó gerenciado.
  • O anfitrião usa o NetworkManager para configurar a rede.

Procedimento

  1. Se o anfitrião no qual você deseja executar as instruções no playbook ainda não estiver inventariado, adicione o IP ou nome deste anfitrião ao arquivo /etc/ansible/hosts Inventário possível:

    node.example.com
  2. Crie o playbook ~/ethernet-dynamic-IP.yml com o seguinte conteúdo:

    ---
    - name: Configure an Ethernet connection with dynamic IP
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: linux-system-roles.network
    
        vars:
          network_connections:
            - name: enp7s0
              type: ethernet
              autoconnect: yes
              ip:
                dhcp4: yes
                auto6: yes
              state: up
  3. Execute o livro de brincadeiras:

    • Para se conectar como usuário root ao host gerenciado, entre:

      # ansible-playbook -u root ~/ethernet-dynamic-IP.yml
    • Para conectar-se como usuário ao host administrado, entre:

      # ansible-playbook -u user_name --ask-become-pass ~/ethernet-dynamic-IP.yml

      A opção --ask-become-pass garante que o comando ansible-playbook solicita a senha sudo do usuário definida no -u user_name opção.

    Se você não especificar o -u user_name ansible-playbook se conecta ao host gerenciado como o usuário que está atualmente conectado ao nó de controle.

Recursos adicionais

  • Para detalhes sobre os parâmetros usados em network_connections e para informações adicionais sobre o Sistema de Papel network, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.network/README.md.
  • Para obter detalhes sobre o comando ansible-playbook, consulte a página de manual ansible-playbook(1).

4.2. Configurando a etiquetagem VLAN

Esta seção descreve como configurar a Virtual Local Area Network (VLAN). Uma VLAN é uma rede lógica dentro de uma rede física. Os pacotes de tags da interface VLAN com o ID da VLAN ao passar pela interface, e remove as tags dos pacotes de retorno.

Você cria uma interface VLAN em cima de outra interface, como uma Ethernet, bond, equipe ou dispositivo de ponte. Esta interface é chamada de parent interface.

4.2.1. Configuração da etiquetagem VLAN usando as funções do sistema

Você pode usar a função do sistema networking RHEL para configurar a etiquetagem VLAN. Este procedimento descreve como adicionar uma conexão Ethernet e uma VLAN com ID 10 que usa esta conexão Ethernet. Como o dispositivo pai, a conexão VLAN contém as configurações IP, gateway padrão e DNS.

Dependendo de seu ambiente, ajuste o jogo de acordo. Por exemplo:

  • Para usar a VLAN como uma porta em outras conexões, como uma ligação, omitir o atributo ip, e definir a configuração IP na configuração pai.
  • Para usar os dispositivos de equipe, ponte, ou bond na VLAN, adapte os atributos interface_name e type dos portos que você usa na VLAN.

Pré-requisitos

  • Os pacotes ansible e rhel-system-roles estão instalados no nó de controle.
  • Se você usar um usuário remoto diferente de root ao executar o playbook, este usuário tem as permissões apropriadas sudo no nó gerenciado.

Procedimento

  1. Se o anfitrião no qual você deseja executar as instruções no playbook ainda não estiver inventariado, adicione o IP ou nome deste anfitrião ao arquivo /etc/ansible/hosts Inventário possível:

    node.example.com
  2. Crie o playbook ~/vlan-ethernet.yml com o seguinte conteúdo:

    ---
    - name: Configure a VLAN that uses an Ethernet connection
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: linux-system-roles.network
    
        vars:
          network_connections:
            # Add an Ethernet profile for the underlying device of the VLAN
            - name: enp1s0
              type: ethernet
    	  interface_name: enp1s0
    	  autoconnect: yes
              state: up
    	  ip:
    	    dhcp4: no
    	    auto6: no
    
            # Define the VLAN profile
            - name: vlan10
              type: vlan
              ip:
                address:
                  - "192.0.2.1/24"
                  - "2001:db8:1::1/64"
                gateway4: 192.0.2.254
                gateway6: 2001:db8:1::fffe
                dns:
                  - 192.0.2.200
                  - 2001:db8:1::ffbb
                dns_search:
                  - example.com
              vlan_id: 10
    	  parent: enp1s0
              state: up

    O atributo parent no perfil da VLAN configura a VLAN para operar em cima do dispositivo enp1s0.

  3. Execute o livro de brincadeiras:

    • Para se conectar como usuário root ao host gerenciado, entre:

      # ansible-playbook -u root ~/vlan-ethernet.yml
    • Para conectar-se como usuário ao host administrado, entre:

      # ansible-playbook -u user_name --ask-become-pass ~/vlan-ethernet.yml

      A opção --ask-become-pass garante que o comando ansible-playbook solicita a senha sudo do usuário definido no -u user_name opção.

    Se você não especificar o -u user_name ansible-playbook se conecta ao host gerenciado como o usuário que está atualmente conectado ao nó de controle.

Recursos adicionais

  • Para detalhes sobre os parâmetros usados em network_connections e para informações adicionais sobre o Sistema de Papel network, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.network/README.md.
  • Para obter detalhes sobre o comando ansible-playbook, consulte a página de manual ansible-playbook(1).

4.3. Configuração de uma ponte de rede

Uma ponte de rede é um dispositivo de camada de ligação que encaminha o tráfego entre redes com base em uma tabela de endereços MAC. A ponte constrói a tabela de endereços MAC ouvindo o tráfego da rede e, assim, aprendendo quais hosts estão conectados a cada rede. Por exemplo, você pode usar uma ponte de software em um host Red Hat Enterprise Linux 8 para emular uma ponte de hardware ou em ambientes de virtualização, para integrar máquinas virtuais (VM) à mesma rede que o host.

Uma ponte requer um dispositivo de rede em cada rede que a ponte deve conectar. Quando você configura uma ponte, a ponte é chamada controller e os dispositivos que ela usa ports.

Você pode criar pontes em diferentes tipos de dispositivos, como por exemplo:

  • Dispositivos Ethernet físicos e virtuais
  • Títulos de rede
  • Equipes de rede
  • Dispositivos VLAN

Devido ao padrão IEEE 802.11 que especifica o uso de quadros de 3 endereços em Wi-Fi para o uso eficiente do tempo de antena, não é possível configurar uma ponte sobre redes Wi-Fi operando nos modos Ad-Hoc ou Infra-estrutura.

4.3.1. Configuração de uma ponte de rede usando as funções do sistema RHEL

Você pode usar o sistema networking RHEL Role para configurar uma ponte Linux. Este procedimento descreve como configurar uma ponte de rede que utiliza dois dispositivos Ethernet e define endereços IPv4 e IPv6, gateways padrão e configuração DNS.

Nota

Defina a configuração IP na ponte e não nas portas da ponte Linux.

Pré-requisitos

  • Os pacotes ansible e rhel-system-roles estão instalados no nó de controle.
  • Se você usar um usuário remoto diferente de root ao executar o playbook, este usuário tem as permissões apropriadas sudo no nó gerenciado.
  • Dois ou mais dispositivos físicos ou virtuais de rede são instalados no servidor.

Procedimento

  1. Se o anfitrião no qual você deseja executar as instruções no playbook ainda não estiver inventariado, adicione o IP ou nome deste anfitrião ao arquivo /etc/ansible/hosts Inventário possível:

    node.example.com
  2. Crie o playbook ~/bridge-ethernet.yml com o seguinte conteúdo:

    ---
    - name: Configure a network bridge that uses two Ethernet ports
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: linux-system-roles.network
    
        vars:
          network_connections:
            # Define the bridge profile
            - name: bridge0
              type: bridge
              interface_name: bridge0
              ip:
                address:
                  - "192.0.2.1/24"
                  - "2001:db8:1::1/64"
                gateway4: 192.0.2.254
                gateway6: 2001:db8:1::fffe
                dns:
                  - 192.0.2.200
                  - 2001:db8:1::ffbb
                dns_search:
                  - example.com
              state: up
    
            # Add an Ethernet profile to the bridge
            - name: bridge0-port1
              interface_name: enp7s0
              type: ethernet
              master: bridge0
              slave_type: bridge
              state: up
    
            # Add a second Ethernet profile to the bridge
            - name: bridge0-port2
              interface_name: enp8s0
              type: ethernet
              master: bridge0
              slave_type: bridge
              state: up
  3. Execute o livro de brincadeiras:

    • Para se conectar como usuário root ao host gerenciado, entre:

      # ansible-playbook -u root ~/bridge-ethernet.yml
    • Para conectar-se como usuário ao host administrado, entre:

      # ansible-playbook -u user_name --ask-become-pass ~/bridge-ethernet.yml

      A opção --ask-become-pass garante que o comando ansible-playbook solicita a senha sudo do usuário definido no -u user_name opção.

    Se você não especificar o -u user_name ansible-playbook se conecta ao host gerenciado como o usuário que está atualmente conectado ao nó de controle.

Recursos adicionais

  • Para detalhes sobre os parâmetros usados em network_connections e para informações adicionais sobre o Sistema de Papel network, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.network/README.md.
  • Para obter detalhes sobre o comando ansible-playbook, consulte a página de manual ansible-playbook(1).

4.4. Configurando a ligação em rede

Esta seção descreve o básico da ligação em rede, as diferenças entre ligação e equipe, e como configurar uma ligação em rede no Red Hat Enterprise Linux 8.

Você pode criar vínculos em diferentes tipos de dispositivos, como por exemplo:

  • Dispositivos Ethernet físicos e virtuais
  • Pontes de rede
  • Equipes de rede
  • Dispositivos VLAN

4.4.1. Configuração de um vínculo de rede usando as funções do sistema RHEL

Você pode usar a função do Sistema RHEL network para configurar um vínculo de rede. Este procedimento descreve como configurar um vínculo em modo de backup ativo que usa dois dispositivos Ethernet e define um endereço IPv4 e IPv6, gateways padrão e configuração DNS.

Nota

Defina a configuração IP na ponte e não nas portas da ponte Linux.

Pré-requisitos

  • Os pacotes ansible e rhel-system-roles estão instalados no nó de controle.
  • Se você usar um usuário remoto diferente de root ao executar o playbook, este usuário tem as permissões apropriadas sudo no nó gerenciado.
  • Dois ou mais dispositivos físicos ou virtuais de rede são instalados no servidor.

Procedimento

  1. Se o anfitrião no qual você deseja executar as instruções no playbook ainda não estiver inventariado, adicione o IP ou nome deste anfitrião ao arquivo /etc/ansible/hosts Inventário possível:

    node.example.com
  2. Crie o playbook ~/bond-ethernet.yml com o seguinte conteúdo:

    ---
    - name: Configure a network bond that uses two Ethernet ports
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: linux-system-roles.network
    
        vars:
          network_connections:
            # Define the bond profile
            - name: bond0
              type: bond
              interface_name: bond0
              ip:
                address:
                  - "192.0.2.1/24"
                  - "2001:db8:1::1/64"
                gateway4: 192.0.2.254
                gateway6: 2001:db8:1::fffe
                dns:
                  - 192.0.2.200
                  - 2001:db8:1::ffbb
                dns_search:
                  - example.com
              bond:
                mode: active-backup
              state: up
    
            # Add an Ethernet profile to the bond
            - name: bond0-port1
              interface_name: enp7s0
              type: ethernet
              master: bond0
              state: up
    
            # Add a second Ethernet profile to the bond
            - name: bond0-port2
              interface_name: enp8s0
              type: ethernet
              master: bond0
              state: up
  3. Execute o livro de brincadeiras:

    • Para se conectar como usuário root ao host gerenciado, entre:

      # ansible-playbook -u root ~/bond-ethernet.yml
    • Para conectar-se como usuário ao host administrado, entre:

      # ansible-playbook -u user_name --ask-become-pass ~/bond-ethernet.yml

      A opção --ask-become-pass garante que o comando ansible-playbook solicita a senha sudo do usuário definido no -u user_name opção.

    Se você não especificar o -u user_name ansible-playbook se conecta ao host gerenciado como o usuário que está atualmente conectado ao nó de controle.

Recursos adicionais

  • Para detalhes sobre os parâmetros usados em network_connections e para informações adicionais sobre o Sistema de Papel network, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.network/README.md.
  • Para obter detalhes sobre o comando ansible-playbook, consulte a página de manual ansible-playbook(1).

4.5. Autenticação de um cliente RHEL para a rede usando a norma 802.1X

Os administradores freqüentemente usam o Controle de Acesso à Rede (NAC) baseado no padrão IEEE 802.1X para proteger uma rede contra clientes LAN e Wi-Fi não autorizados. Os procedimentos nesta seção descrevem diferentes opções para configurar a autenticação da rede.

4.5.1. Configuração de uma conexão Ethernet estática com autenticação de rede 802.1X usando as funções do sistema RHEL

Usando as funções do Sistema RHEL, você pode automatizar a criação de uma conexão Ethernet que usa o padrão 802.1X para autenticar o cliente. Este procedimento descreve como adicionar remotamente uma conexão Ethernet para a interface enp1s0 com as seguintes configurações, executando um Livro de Jogadas Possível:

  • Um endereço IPv4 estático - 192.0.2.1 com uma máscara de sub-rede /24
  • Um endereço IPv6 estático - 2001:db8:1::1 com uma máscara de sub-rede /64
  • Um gateway padrão IPv4 - 192.0.2.254
  • Um gateway padrão IPv6 - 2001:db8:1::fffe
  • Um servidor DNS IPv4 - 192.0.2.200
  • Um servidor DNS IPv6 - 2001:db8:1::ffbb
  • Um domínio de busca DNS - example.com
  • 802.1X autenticação de rede usando o protocolo TLS Extensible Authentication Protocol (EAP)

Execute este procedimento no Nó de controle possível.

Pré-requisitos

  • Os pacotes ansible e rhel-system-roles estão instalados no nó de controle.
  • Se você usar um usuário remoto diferente de root ao executar o playbook, você deve ter as permissões apropriadas sudo no nó gerenciado.
  • A rede suporta autenticação de rede 802.1X.
  • O nó gerenciado utiliza o NetworkManager.
  • Os seguintes arquivos necessários para autenticação TLS existem no nó de controle:

    • A chave do cliente armazenada no arquivo /srv/data/client.key.
    • O certificado do cliente armazenado no arquivo /srv/data/client.crt.
    • O certificado da Autoridade Certificadora (CA) armazenado no arquivo /srv/data/ca.crt.

Procedimento

  1. Se o anfitrião no qual você deseja executar as instruções no playbook ainda não estiver inventariado, adicione o IP ou nome deste anfitrião ao arquivo /etc/ansible/hosts Inventário possível:

    node.example.com
  2. Crie o playbook ~/enable-802.1x.yml com o seguinte conteúdo:

    ---
    - name: Configure an Ethernet connection with 802.1X authentication
      hosts: node.example.com
      become: true
      tasks:
        - name: Copy client key for 802.1X authentication
          copy:
            src: "/srv/data/client.key"
            dest: "/etc/pki/tls/private/client.key"
            mode: 0600
    
        - name: Copy client certificate for 802.1X authentication
          copy:
            src: "/srv/data/client.crt"
            dest: "/etc/pki/tls/certs/client.crt"
    
        - name: Copy CA certificate for 802.1X authentication
          copy:
            src: "/srv/data/ca.crt"
            dest: "/etc/pki/ca-trust/source/anchors/ca.crt"
    
        - include_role:
            name: linux-system-roles.network
          vars:
            network_connections:
              - name: enp1s0
                type: ethernet
                autoconnect: yes
                ip:
                  address:
                    - 192.0.2.1/24
                    - 2001:db8:1::1/64
                  gateway4: 192.0.2.254
                  gateway6: 2001:db8:1::fffe
                  dns:
                    - 192.0.2.200
                    - 2001:db8:1::ffbb
                  dns_search:
                    - example.com
                ieee802_1x:
                  identity: user_name
                  eap: tls
                  private_key: "/etc/pki/tls/private/client.key"
                  private_key_password: "password"
                  client_cert: "/etc/pki/tls/certs/client.crt"
                  ca_cert: "/etc/pki/ca-trust/source/anchors/ca.crt"
                  domain_suffix_match: example.com
                state: up
  3. Execute o livro de brincadeiras:

    • Para se conectar como usuário root ao host gerenciado, entre:

      # ansible-playbook -u root ~/enable-802.1x.yml
    • Para conectar-se como usuário ao host administrado, entre:

      # ansible-playbook -u user_name --ask-become-pass ~/ethernet-static-IP.yml

      A opção --ask-become-pass garante que o comando ansible-playbook solicita a senha sudo do usuário definido no -u user_name opção.

    Se você não especificar o -u user_name ansible-playbook se conecta ao host gerenciado como o usuário que está atualmente conectado ao nó de controle.

Recursos adicionais

  • Para detalhes sobre os parâmetros usados em network_connections e para informações adicionais sobre o Sistema de Papel network, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.network/README.md.
  • Para obter detalhes sobre os parâmetros 802.1X, consulte a seção ieee802_1x no arquivo /usr/share/ansible/roles/rhel-system-roles.network/README.md.
  • Para obter detalhes sobre o comando ansible-playbook, consulte a página de manual ansible-playbook(1).

4.6. Gerenciando a configuração padrão do gateway

O gateway padrão é um roteador que encaminha pacotes de rede quando nenhuma outra rota corresponde ao destino de um pacote. Em uma rede local, o gateway padrão é tipicamente o host que está um salto mais próximo da Internet.

4.6.1. Configurando o gateway padrão em uma conexão existente usando as funções do sistema

Você pode usar a função do Sistema RHEL networking para definir o gateway padrão.

Importante

Quando você executa uma peça que usa o Sistema Função networking RHEL, o Sistema Função substitui um perfil de conexão existente com o mesmo nome se as configurações não coincidirem com as especificadas na peça. Portanto, sempre especifique toda a configuração do perfil de conexão de rede na peça, mesmo que, por exemplo, a configuração IP já exista. Caso contrário, o papel redefine estes valores com seus padrões.

Dependendo se já existe, o procedimento cria ou atualiza o perfil de conexão enp1s0 com as seguintes configurações:

  • Um endereço IPv4 estático - 198.51.100.20 com uma máscara de sub-rede /24
  • Um endereço IPv6 estático - 2001:db8:1::1 com uma máscara de sub-rede /64
  • Um gateway padrão IPv4 - 198.51.100.254
  • Um gateway padrão IPv6 - 2001:db8:1::fffe
  • Um servidor DNS IPv4 - 198.51.100.200
  • Um servidor DNS IPv6 - 2001:db8:1::ffbb
  • Um domínio de busca DNS - example.com

Pré-requisitos

  • Os pacotes ansible e rhel-system-roles estão instalados no nó de controle.
  • Se você usar um usuário remoto diferente de root ao executar o playbook, este usuário tem as permissões apropriadas sudo no nó gerenciado.

Procedimento

  1. Se o anfitrião no qual você deseja executar as instruções no playbook ainda não estiver inventariado, adicione o IP ou nome deste anfitrião ao arquivo /etc/ansible/hosts Inventário possível:

    node.example.com
  2. Crie o playbook ~/ethernet-connection.yml com o seguinte conteúdo:

    ---
    - name: Configure an Ethernet connection with static IP and default gateway
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: linux-system-roles.network
    
        vars:
          network_connections:
            - name: enp1s0
              type: ethernet
              autoconnect: yes
              ip:
                address:
                  - 198.51.100.20/24
                  - 2001:db8:1::1/64
                gateway4: 198.51.100.254
                gateway6: 2001:db8:1::fffe
                dns:
                  - 198.51.100.200
                  - 2001:db8:1::ffbb
                dns_search:
                  - example.com
              state: up
  3. Execute o livro de brincadeiras:

    • Para se conectar como usuário root ao host gerenciado, entre:

      # ansible-playbook -u root ~/ethernet-connection.yml
    • Para conectar-se como usuário ao host administrado, entre:

      # ansible-playbook -u user_name --ask-become-pass ~/ethernet-connection.yml

      A opção --ask-become-pass garante que o comando ansible-playbook solicita a senha sudo do usuário definido no -u user_name opção.

    Se você não especificar o -u user_name ansible-playbook se conecta ao host gerenciado como o usuário que está atualmente conectado ao nó de controle.

Recursos adicionais

  • Para detalhes sobre os parâmetros usados em network_connections e para informações adicionais sobre o Sistema de Papel network, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.network/README.md.
  • Para obter detalhes sobre o comando ansible-playbook, consulte a página de manual ansible-playbook(1).

4.7. Configuração de rotas estáticas

Por default, e se um gateway default for configurado, o Red Hat Enterprise Linux encaminha o tráfego para redes que não estão diretamente conectadas ao host para o gateway default. Usando uma rota estática, você pode configurar que o Red Hat Enterprise Linux encaminhe o tráfego para um host ou rede específica para um roteador diferente do gateway default. Esta seção descreve diferentes opções de como configurar rotas estáticas.

4.7.1. Configuração de uma rota estática usando as funções do sistema RHEL

Você pode usar o sistema networking RHEL Role para configurar rotas estáticas.

Importante

Quando você executa uma peça que usa o Sistema Função networking RHEL, o Sistema Função substitui um perfil de conexão existente com o mesmo nome se as configurações não coincidirem com as especificadas na peça. Portanto, sempre especifique toda a configuração do perfil de conexão de rede na peça, mesmo que, por exemplo, a configuração IP já exista. Caso contrário, o papel redefine estes valores com seus padrões.

Dependendo se já existe, o procedimento cria ou atualiza o perfil de conexão enp7s0 com as seguintes configurações:

  • Um endereço IPv4 estático - 198.51.100.20 com uma máscara de sub-rede /24
  • Um endereço IPv6 estático - 2001:db8:1::1 com uma máscara de sub-rede /64
  • Um gateway padrão IPv4 - 198.51.100.254
  • Um gateway padrão IPv6 - 2001:db8:1::fffe
  • Um servidor DNS IPv4 - 198.51.100.200
  • Um servidor DNS IPv6 - 2001:db8:1::ffbb
  • Um domínio de busca DNS - example.com
  • Rotas estáticas:

    • 192.0.2.0/24 com gateway 198.51.100.1
    • 203.0.113.0/24 com gateway 198.51.100.2

Pré-requisitos

  • Os pacotes ansible e rhel-system-roles estão instalados no nó de controle.
  • Se você usar um usuário remoto diferente de root ao executar o playbook, este usuário tem as permissões apropriadas sudo no nó gerenciado.

Procedimento

  1. Se o anfitrião no qual você deseja executar as instruções no playbook ainda não estiver inventariado, adicione o IP ou nome deste anfitrião ao arquivo /etc/ansible/hosts Inventário possível:

    node.example.com
  2. Crie o playbook ~/add-static-routes.yml com o seguinte conteúdo:

    ---
    - name: Configure an Ethernet connection with static IP and additional routes
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: linux-system-roles.network
    
        vars:
          network_connections:
            - name: enp7s0
              type: ethernet
              autoconnect: yes
              ip:
                address:
                  - 198.51.100.20/24
                  - 2001:db8:1::1/64
                gateway4: 198.51.100.254
                gateway6: 2001:db8:1::fffe
                dns:
                  - 198.51.100.200
                  - 2001:db8:1::ffbb
                dns_search:
                  - example.com
                route:
                  - network: 192.0.2.0
                    prefix: 24
                    gateway: 198.51.100.1
                  - network: 203.0.113.0
                    prefix: 24
                    gateway: 198.51.100.2
              state: up
  3. Execute o livro de brincadeiras:

    • Para se conectar como usuário root ao host gerenciado, entre:

      # ansible-playbook -u root ~/add-static-routes.yml
    • Para conectar-se como usuário ao host administrado, entre:

      # ansible-playbook -u user_name --ask-become-pass ~/add-static-routes.yml

      A opção --ask-become-pass garante que o comando ansible-playbook solicita a senha sudo do usuário definido no -u user_name opção.

    Se você não especificar o -u user_name ansible-playbook se conecta ao host gerenciado como o usuário que está atualmente conectado ao nó de controle.

Etapas de verificação

  • Exibir a tabela de roteamento:

    # ip -4 route
    default via 198.51.100.254 dev enp7s0 proto static metric 100
    192.0.2.0/24 via 198.51.100.1 dev enp7s0 proto static metric 100
    203.0.113.0/24 via 198.51.100.2 dev enp7s0 proto static metric 100
    ...

Recursos adicionais

  • Para detalhes sobre os parâmetros usados em network_connections e para informações adicionais sobre o Sistema de Papel network, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.network/README.md.
  • Para obter detalhes sobre o comando ansible-playbook, consulte a página de manual ansible-playbook(1).

4.8. Configuração dos recursos de descarga de etool

As placas de interface de rede podem usar o motor de descarga TCP (TOE) para descarregar o processamento de certas operações para o controlador da rede para melhorar o rendimento da rede.

Esta seção descreve como ativar os recursos de descarga.

4.8.1. Utilização de funções do sistema para definir as características do etool

Você pode usar a função do Sistema RHEL networking para configurar ethtool recursos de uma conexão NetworkManager.

Importante

Quando você executa uma peça que usa o Sistema Função networking RHEL, o Sistema Função substitui um perfil de conexão existente com o mesmo nome se as configurações não coincidirem com as especificadas na peça. Portanto, sempre especifique toda a configuração do perfil de conexão de rede na peça, mesmo que, por exemplo, a configuração IP já exista. Caso contrário, o papel redefine estes valores com seus padrões.

Dependendo se já existe, o procedimento cria ou atualiza o perfil de conexão enp1s0 com as seguintes configurações:

  • Um endereço IPv4 estático - 198.51.100.20 com uma máscara de sub-rede /24
  • Um endereço IPv6 estático - 2001:db8:1::1 com uma máscara de sub-rede /64
  • Um gateway padrão IPv4 - 198.51.100.254
  • Um gateway padrão IPv6 - 2001:db8:1::fffe
  • Um servidor DNS IPv4 - 198.51.100.200
  • Um servidor DNS IPv6 - 2001:db8:1::ffbb
  • Um domínio de busca DNS - example.com
  • ethtool apresenta:

    • Genéricos recebem descarregar (GRO): desativado
    • Segmentação genérica de descarga (GSO): habilitada
    • Segmentação do TX Stream Control Transmission Protocol (SCTP): desativado

Pré-requisitos

  • Os pacotes ansible e rhel-system-roles estão instalados no nó de controle.
  • Se você usar um usuário remoto diferente do root ao executar o playbook, este usuário tem as permissões apropriadas sudo no nó gerenciado.

Procedimento

  1. Se o anfitrião no qual você deseja executar as instruções no playbook ainda não estiver inventariado, adicione o IP ou nome deste anfitrião ao arquivo /etc/ansible/hosts Inventário possível:

    node.example.com
  2. Crie o playbook ~/configure-ethernet-device-with-ethtool-features.yml com o seguinte conteúdo:

    ---
    - name. Configure an Ethernet connection with ethtool features
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: linux-system-roles.network
    
        vars:
          network_connections:
            - name: enp1s0
              type: ethernet
              autoconnect: yes
              ip:
                address:
                  - 198.51.100.20/24
                  - 2001:db8:1::1/64
                gateway4: 198.51.100.254
                gateway6: 2001:db8:1::fffe
                dns:
                  - 198.51.100.200
                  - 2001:db8:1::ffbb
                dns_search:
                  - example.com
              ethtool:
                feature:
                  gro: "no"
                  gso: "yes"
                  tx_sctp_segmentation: "no"
              state: up
  3. Execute o livro de brincadeiras:

    • Para se conectar como usuário root ao host gerenciado, entre:

      # ansible-playbook -u root ~/configure-ethernet-device-with-ethtool-features.yml
    • Para conectar-se como usuário ao host administrado, entre:

      # ansible-playbook -u user_name --ask-become-pass ~/configure-ethernet-device-with-ethtool-features.yml

      A opção --ask-become-pass garante que o comando ansible-playbook solicita a senha sudo do usuário definido no -u user_name opção.

    Se você não especificar o -u user_name ansible-playbook se conecta ao host gerenciado como o usuário que está atualmente conectado ao nó de controle.

Recursos adicionais

  • ethtool Para uma lista completa dos recursos e detalhes sobre os parâmetros usados em network_connections, e para informações adicionais sobre a função do sistema network, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.network/README.md.
  • Para obter detalhes sobre o comando ansible-playbook, consulte a página de manual ansible-playbook(1).

Capítulo 5. Configuração do SElinux usando funções do sistema

5.1. Introdução ao papel do sistema SELinux

As funções do sistema RHEL são uma coleção de funções e módulos possíveis que fornecem uma interface de configuração consistente para gerenciar remotamente vários sistemas RHEL. A função do sistema SELinux permite as seguintes ações:

  • Limpeza de modificações políticas locais relacionadas a booleanos SELinux, contextos de arquivos, portas e logins.
  • Configurando a política SELinux booleans, contextos de arquivos, portas e logins.
  • Restauração de contextos de arquivos em arquivos ou diretórios especificados.

A tabela a seguir fornece uma visão geral das variáveis de entrada disponíveis na função do sistema SELinux.

Tabela 5.1. Variáveis de função do sistema SELinux

Função variávelDescriçãoAlternativa CLI

selinux_policy

Escolhe uma política de proteção de processos direcionados ou proteção de segurança multinível.

SELINUXTYPE em /etc/selinux/config

selinux_state

Troca os modos SELinux. Ver ansible-doc selinux

setenforce e SELINUX em /etc/selinux/config.

selinux_booleans

Habilita e desabilita as booleanas SELinux. Ver ansible-doc seboolean.

setsebool

selinux_fcontexts

Adiciona ou remove um mapeamento de contexto de arquivo SELinux. Ver ansible-doc sefcontext.

semanage fcontext

selinux_restore_dirs

Restaura as etiquetas SELinux na árvore do sistema de arquivos.

restorecon -R

selinux_ports

Define as etiquetas SELinux nos portos. Ver ansible-doc seport.

semanage port

selinux_logins

Define os usuários para o mapeamento de usuários SELinux. Ver ansible-doc selogin.

semanage login

O exemplo de playbook /usr/share/doc/rhel-system-roles/selinux/example-selinux-playbook.yml, instalado pelo pacote rhel-system-roles, demonstra como definir a política direcionada no modo de aplicação. O playbook também aplica várias modificações de políticas locais e restaura contextos de arquivos no diretório /tmp/test_dir/.

Recursos adicionais

  • Para uma referência detalhada sobre as variáveis de função do SELinux, instale o pacote rhel-system-roles, e veja os arquivos README.md ou README.html no diretório /usr/share/doc/rhel-system-roles/selinux/.
  • Para mais informações sobre os papéis do Sistema RHEL, veja Introdução aos papéis do Sistema RHEL

5.2. Usando a função do sistema SELinux para aplicar as configurações do SELinux em vários sistemas

Siga os passos para preparar e aplicar um livro de exercícios possível com suas configurações SELinux verificadas.

Pré-requisitos

Procedimento

  1. Habilite o repositório RHEL Ansible, por exemplo:

    # subscription-manager repos --enable ansible-2-for-rhel-8-x86_64-rpms
  2. Instalar Motor Possível:

    # yum install ansible
  3. Instalar as funções do sistema RHEL:

    # yum install rhel-system-roles
  4. Aplique seu playbook com um papel no sistema SELinux.

    O seguinte comando aplica um exemplo de playbook, que faz parte do pacote rhel-system-roles. Você pode usar este playbook como um modelo:

    # ansible-playbook -i host1,host2,host3 /usr/share/doc/rhel-system-roles/selinux/example-selinux-playbook.yml

Recursos adicionais

  • Para mais informações, instale o pacote rhel-system-roles, e consulte os diretórios /usr/share/doc/rhel-system-roles/selinux/ e /usr/share/ansible/roles/rhel-system-roles.selinux/.

Capítulo 6. Usando o papel do sistema de registro

Como administrador do sistema, você pode usar a função de sistema de registro para configurar um host RHEL como um servidor de registro para coletar registros de muitos sistemas clientes.

6.1. O papel do sistema de registro

Com o papel do sistema de registro, você pode implantar configurações de registro em hosts locais e remotos.

Para aplicar uma função de sistema de registro em um ou mais sistemas, você define a configuração de registro em um playbook. Um playbook é uma lista de uma ou mais peças. Os playbooks são legíveis por humanos, e são escritos no formato YAML. Para mais informações sobre playbooks, consulte Trabalhando com playbooks em Documentação possível.

O conjunto de sistemas que você deseja Ansible para configurar de acordo com o playbook está definido em um inventory file. Para mais informações sobre como criar e utilizar inventários, veja Como construir seu inventário na documentação do Ansible.

As soluções de registro fornecem múltiplas formas de leitura de registros e múltiplas saídas de registro.

Por exemplo, um sistema de registro pode receber as seguintes entradas:

  • arquivos locais,
  • systemd/journal,
  • outro sistema de registro através da rede.

Além disso, um sistema de registro pode ter as seguintes saídas:

  • os logs são armazenados nos arquivos locais no diretório /var/log,
  • os logs são enviados para a Elasticsearch,
  • os logs são encaminhados para outro sistema de extração.

Com o papel do sistema de registro, você pode combinar as entradas e saídas para atender às suas necessidades. Por exemplo, você pode configurar uma solução de registro que armazena entradas de journal em um arquivo local, enquanto as entradas lidas dos arquivos são ambas encaminhadas para outro sistema de registro e armazenadas nos arquivos de registro locais.

6.2. Parâmetros de papel do sistema de registro

Em um livro de jogo de funções do sistema de registro, você define as entradas no parâmetro logging_inputs, as saídas no parâmetro logging_outputs e as relações entre as entradas e saídas no parâmetro logging_flows. O Sistema de Logging Role processa estas variáveis com opções adicionais para configurar o sistema de registro. Você também pode habilitar a criptografia.

Nota

Atualmente, o único sistema de registro disponível na função de sistema de registro é Rsyslog.

  • logging_inputs - Lista de insumos para a solução de extração.

    • name - Nome único da entrada. Usado na lista de entradas logging_flows e uma parte do nome do arquivo config gerado.
    • type - Tipo do elemento de entrada. O tipo especifica um tipo de tarefa que corresponde a um nome de diretório em roles/rsyslog/{tasks,vars}/inputs/.

      • basics - Entradas configurando entradas do jornal systemd ou do soquete unix.

        • kernel_message - Carregar imklog se estiver definido para true. Default para false.
        • use_imuxsock - Use imuxsock ao invés de imjournal. Por omissão para false.
        • ratelimit_burst - Número máximo de mensagens que podem ser emitidas dentro de ratelimit_interval. Por omissão para 20000 se use_imuxsock for falso. Predefinição para 200 se use_imuxsock for verdadeiro.
        • ratelimit_interval - Intervalo para avaliação ratelimit_burst. Por omissão para 600 segundos se use_imuxsock for falso. Default para 0 se use_imuxsock for verdadeiro. 0 indica que a limitação da taxa está desligada.
        • persist_state_interval - O estado do periódico persiste a cada value mensagens. Por omissão para 10. Efetivo somente quando use_imuxsock é falso.
      • files - Entradas configurando entradas a partir de arquivos locais.
      • remote - Entradas configurando as entradas do outro sistema de registro através da rede.
    • state - Estado do arquivo de configuração. present ou absent. Padrão para present.
  • logging_outputs - Lista de saídas para a solução de extração.

    • files - Saídas configurando saídas para arquivos locais.
    • forwards - Saídas configurando saídas para outro sistema de registro.
    • remote_files - Saídas configurando as saídas de outro sistema de registro em arquivos locais.
  • logging_flows - Lista de fluxos que definem as relações entre logging_inputs e logging_outputs. A variável logging_flows tem as seguintes chaves:

    • name - Nome único do fluxo
    • inputs - Lista de valores do nome logging_inputs
    • outputs - Lista de valores do nome logging_outputs.

Recursos adicionais

  • Documentação instalada com o pacote rhel-system-roles em /usr/share/ansible/roles/rhel-system-roles.logging/README.html

6.3. Aplicação de uma função de sistema de registro local

Siga estes passos para preparar e aplicar um livro de jogo do Red Hat Ansible Engine para configurar uma solução de registro em um conjunto de máquinas separadas. Cada máquina registrará os logs localmente.

Pré-requisitos

  • Você tem o Red Hat Ansible Engine instalado no sistema a partir do qual você deseja executar o playbook.

    Nota

    Você não precisa ter o Red Hat Ansible Engine instalado nos sistemas nos quais você deseja implantar a solução de registro.

  • Você tem o pacote rhel-system-roles sobre o sistema a partir do qual você deseja executar o playbook.

    Nota

    Você não precisa ter rsyslog instalado, porque a função do sistema instala rsyslog quando implantado.

  • Você tem um arquivo de inventário listando os sistemas nos quais você deseja configurar a solução de registro.

Procedimento

  1. Criar um playbook que defina o papel exigido:

    1. Criar um novo arquivo YAML e abri-lo em um editor de texto, por exemplo:

      # vi logging-playbook.yml
    2. Insira o seguinte conteúdo:

      ---
      - name: Deploying basics input and implicit files output
        hosts: all
        roles:
          - linux-system-roles.logging
        vars:
          logging_inputs:
            - name: system_input
              type: basics
          logging_outputs:
            - name: files_output
              type: files
          logging_flows:
            - name: flow1
              inputs: [system_input]
              outputs: [files_output]
  2. Executar o playbook em um inventário específico:

    # ansible-playbook -i inventory-file /path/to/file/logging-playbook.yml

    Onde:

    • inventory-file é o arquivo do inventário.
    • logging-playbook.yml é o livro de jogo que você usa.

Verificação

  1. Teste a sintaxe do arquivo /etc/rsyslog.conf:

    # rsyslogd -N 1
    rsyslogd: version 8.1911.0-6.el8, config validation run (level 1), master config /etc/rsyslog.conf
    rsyslogd: End of config validation run. Bye.
  2. Verifique se o sistema envia mensagens para o log:

    1. Envie uma mensagem de teste:

      # logger test
    2. Veja o registro /var/log/messages, por exemplo:

      # cat /var/log/messages
      Aug  5 13:48:31 hostname root[6778]: test

      Onde `hostname` é o nome do host do sistema do cliente. Note que o log contém o nome do usuário que digitou o comando logger, neste caso root.

6.4. Aplicação de uma solução de registro remoto utilizando o papel do sistema de registro

Siga estes passos para preparar e aplicar um livro de exercícios do Red Hat Ansible Engine para configurar uma solução de registro remoto. Neste playbook, um ou mais clientes pegam logs de systemd-journal e os encaminham para um servidor remoto. O servidor recebe entradas remotas de remote_rsyslog e remote_files e envia os logs para arquivos locais em diretórios nomeados por nomes de hosts remotos.

Pré-requisitos

  • Você tem o Red Hat Ansible Engine instalado no sistema a partir do qual você deseja executar o playbook.

    Nota

    Você não precisa ter o Red Hat Ansible Engine instalado nos sistemas nos quais você deseja implantar a solução de registro.

  • Você tem o pacote rhel-system-roles sobre o sistema a partir do qual você deseja executar o playbook.

    Nota

    Você não precisa ter rsyslog instalado, porque a função do sistema instala rsyslog quando implantado.

  • Você tem pelo menos dois sistemas:

    • Pelo menos um será o servidor de registro.
    • Pelo menos um será o cliente madeireiro.

Procedimento

  1. Criar um playbook que defina o papel exigido:

    1. Criar um novo arquivo YAML e abri-lo em um editor de texto, por exemplo:

      # vi logging-playbook.yml
    2. Insira o seguinte conteúdo no arquivo:

      ---
      - name: Deploying remote input and remote_files output
        hosts: server
        roles:
          - linux-system-roles.logging
        vars:
          logging_inputs:
            - name: remote_udp_input
              type: remote
              udp_ports: [ 601 ]
            - name: remote_tcp_input
              type: remote
              tcp_ports: [ 601 ]
          logging_outputs:
            - name: remote_files_output
              type: remote_files
          logging_flows:
            - name: flow_0
              inputs: [remote_udp_input, remote_tcp_input]
              outputs: [remote_files_output]
      
      - name: Deploying basics input and forwards output
        hosts: clients
        roles:
          - linux-system-roles.logging
        vars:
          logging_inputs:
            - name: basic_input
              type: basics
          logging_outputs:
            - name: forward_output0
              type: forwards
              severity: info
              target: host1.example.com
              udp_port: 601
            - name: forward_output1
              type: forwards
              facility: mail
              target: host1.example.com
              tcp_port: 601
          logging_flows:
            - name: flows0
              inputs: [basic_input]
              outputs: [forward_output0, forward_output1]
      
      [basic_input]
      [forward_output0, forward_output1]

      Onde host1.example.com é o servidor de registro.

      Nota

      Você pode modificar os parâmetros no livro de jogo para atender às suas necessidades.

      Atenção

      A solução de registro funciona somente com as portas definidas na política SELinux do sistema servidor ou cliente e abertas no firewall. A política padrão do SELinux inclui as portas 601, 514, 6514, 10514, e 20514. Para utilizar uma porta diferente, modifique a política SELinux no sistema cliente e no sistema servidor. A configuração do firewall através das funções do sistema ainda não é suportada.

  2. Crie um arquivo de inventário que lista seus servidores e clientes:

    1. Criar um novo arquivo e abri-lo em um editor de texto, por exemplo:

      # vi inventory.ini
    2. Insira o seguinte conteúdo no arquivo do inventário:

      [servers]
      server ansible_host=host1.example.com
      [clients]
      client ansible_host=host2.example.com

      Where: * host1.example.com is the logging server. * host2.example.com is the logging client.

  3. Execute o playbook em seu inventário.

    # ansible-playbook -i /path/to/file/inventory.ini /path/to/file/_logging-playbook.yml

    Onde:

    • inventory.ini é o arquivo do inventário.
    • logging-playbook.yml é o livro de jogo que você criou.

Etapas de verificação

  1. Tanto no sistema cliente quanto no servidor, teste a sintaxe do arquivo /etc/rsyslog.conf:

    # rsyslogd -N 1
    rsyslogd: version 8.1911.0-6.el8, config validation run (level 1), master config /etc/rsyslog.conf
    rsyslogd: End of config validation run. Bye.
  2. Verificar se o sistema cliente envia mensagens para o servidor:

    1. No sistema do cliente, envie uma mensagem de teste:

      # logger test
    2. No sistema do servidor, veja o log /var/log/messages, por exemplo:

      # cat /var/log/messages
      Aug  5 13:48:31 host2.example.com root[6778]: test

      Onde host2.example.com é o nome do host do sistema cliente. Note que o log contém o nome do usuário que digitou o comando logger, neste caso root.

Recursos adicionais

6.5. Recursos adicionais

Capítulo 7. Usando os papéis do sistema Clevis e Tang

7.1. Introdução às funções do sistema Clevis e Tang

As funções do sistema RHEL são uma coleção de funções e módulos possíveis que fornecem uma interface de configuração consistente para gerenciar remotamente vários sistemas RHEL.

A RHEL 8.3 introduziu funções possíveis para implantações automatizadas de soluções de decriptação baseada em políticas (PBD) usando Clevis e Tang. O pacote rhel-system-roles contém estas funções do sistema, os exemplos relacionados, e também a documentação de referência.

A função do sistema nbde_client permite que você implante vários clientes Clevis de forma automatizada. Note que a função nbde_client suporta apenas as ligações Tang, e você não pode utilizá-la para ligações TPM2 no momento.

A função nbde_client requer volumes que já estão criptografados usando LUKS. Esta função suporta ligar um volume criptografado pelo LUKS a um ou mais servidores Network-Bound (NBDE) - servidores Tang. Você pode preservar a criptografia de volume existente com uma frase-senha ou removê-la. Após remover a frase-senha, você pode desbloquear o volume somente usando NBDE. Isto é útil quando um volume é inicialmente criptografado usando uma chave temporária ou senha que você deve remover após o sistema que você fornece o sistema.

Se você fornecer tanto uma senha como um arquivo chave, a função usa primeiro o que você forneceu. Se não encontrar nenhuma delas válida, tenta recuperar uma frase-chave a partir de uma ligação existente.

PBD define uma ligação como um mapeamento de um dispositivo para um slot. Isto significa que você pode ter várias encadernações para o mesmo dispositivo. O slot padrão é o slot 1.

A função nbde_client fornece também a variável state. Use o valor present para criar uma nova ligação ou atualizar uma já existente. Ao contrário de um comando clevis luks bind, você pode usar state: present também para sobrescrever uma encadernação existente em seu slot de dispositivo. O valor absent remove uma encadernação especificada.

Usando a função nbde_server, você pode implantar e gerenciar um servidor Tang como parte de uma solução automatizada de criptografia de disco. Esta função suporta as seguintes características:

  • Chaves Tang rotativas
  • Implantação e backup de chaves Tang

Recursos adicionais

  • Para uma referência detalhada sobre as variáveis de funções de Criptografia de Disco Ligado em Rede (NBDE), instale o pacote rhel-system-roles e consulte os arquivos README.md e README.html nos diretórios /usr/share/doc/rhel-system-roles/nbde_client/ e /usr/share/doc/rhel-system-roles/nbde_server/.
  • Por exemplo, livros-rolos do sistema, instalar o pacote rhel-system-roles, e ver os diretórios /usr/share/ansible/roles/rhel-system-roles.nbde_server/examples/.
  • Para mais informações sobre os papéis do Sistema RHEL, veja Introdução aos papéis do Sistema RHEL

7.2. Usando a função do sistema nbde_server para a criação de múltiplos servidores Tang

Siga os passos para preparar e aplicar um livro de jogo possível contendo as configurações do seu servidor Tang.

Pré-requisitos

Procedimento

  1. Habilite o repositório RHEL Ansible, por exemplo:

    # subscription-manager repos --enable ansible-2-for-rhel-8-x86_64-rpms
  2. Instalar Motor Possível:

    # yum install ansible
  3. Instalar as funções do sistema RHEL:

    # yum install rhel-system-roles
  4. Prepare seu playbook contendo configurações para os servidores Tang. Você pode começar do zero, ou usar um dos exemplos de playbooks do diretório /usr/share/ansible/roles/rhel-system-roles.nbde_server/examples/.

    # cp /usr/share/ansible/roles/rhel-system-roles.nbde_server/examples/simple_deploy.yml ./my-tang-playbook.yml
  5. Edite o playbook em um editor de texto de sua escolha, por exemplo:

    # vi my-tang-playbook.yml
  6. Adicione os parâmetros necessários. O seguinte exemplo de playbook garante a implantação de seu servidor Tang e uma rotação de chaves:

    ---
    - hosts: all
    
      vars:
        nbde_server_rotate_keys: yes
    
      roles:
        - linux-system-roles.nbde_server
  7. Aplique o livro de jogo acabado:

    # ansible-playbook -i host1,host2,host3 my-tang-playbook.yml

Recursos adicionais

  • Para mais informações, instale o pacote rhel-system-roles, e consulte os diretórios /usr/share/doc/rhel-system-roles/nbde_server/ e usr/share/ansible/roles/rhel-system-roles.nbde_server/.

7.3. Usando a função do sistema nbde_client para a criação de vários clientes Clevis

Siga os passos para preparar e aplicar um livro de jogo possível contendo suas configurações Clevis-cliente.

Nota

A função do sistema nbde_client suporta apenas as amarrações Tang. Isto significa que não é possível utilizá-lo para as amarrações TPM2 no momento.

Pré-requisitos

Procedimento

  1. Habilite o repositório RHEL Ansible, por exemplo:

    # subscription-manager repos --enable ansible-2-for-rhel-8-x86_64-rpms
  2. Instalar Motor Possível:

    # yum install ansible
  3. Instalar as funções do sistema RHEL:

    # yum install rhel-system-roles
  4. Prepare seu playbook contendo configurações para os clientes Clevis. Você pode começar do zero, ou usar um dos exemplos de playbooks do diretório /usr/share/ansible/roles/rhel-system-roles.nbde_client/examples/.

    # cp /usr/share/ansible/roles/rhel-system-roles.nbde_client/examples/high_availability.yml ./my-clevis-playbook.yml
  5. Edite o playbook em um editor de texto de sua escolha, por exemplo:

    # vi my-clevis-playbook.yml
  6. Adicione os parâmetros necessários. O seguinte exemplo de playbook configura os clientes Clevis para desbloqueio automatizado de dois volumes codificados por LUKS quando pelo menos um dos dois servidores Tang estiver disponível:

    ---
    - hosts: all
    
      vars:
        nbde_client_bindings:
          - device: /dev/rhel/root
            encryption_key_src: /etc/luks/keyfile
            servers:
              - http://server1.example.com
              - http://server2.example.com
          - device: /dev/rhel/swap
            encryption_key_src: /etc/luks/keyfile
            servers:
              - http://server1.example.com
              - http://server2.example.com
    
      roles:
        - linux-system-roles.nbde_client
  7. Aplique o livro de jogo acabado:

    # ansible-playbook -i host1,host2,host3 my-clevis-playbook.yml

Recursos adicionais

  • Para detalhes sobre os parâmetros e informações adicionais sobre a função nbde_client, instale o pacote rhel-system-roles, e consulte os diretórios /usr/share/doc/rhel-system-roles/nbde_client/ e /usr/share/ansible/roles/rhel-system-roles.nbde_client/.

Capítulo 8. Solicitação de certificados usando os papéis do Sistema RHEL

Com o Papel do Sistema de Certificado, você pode usar o Red Hat Ansible Engine para emitir e gerenciar certificados.

Este capítulo cobre os seguintes tópicos:

8.1. O papel do sistema de certificados

Usando a função de Sistema de Certificado, você pode gerenciar a emissão e renovação de certificados TLS e SSL usando o Red Hat Ansible Engine.

A função usa certmonger como fornecedor de certificados, e atualmente apóia a emissão e renovação de certificados autoassinados e o uso da autoridade de certificação integrada (CA) da IdM.

Você pode usar as seguintes variáveis em seu Livro de Jogadas com o Papel do Sistema de Certificado:

  • certificate_wait para especificar se a tarefa deve aguardar a emissão do certificado.
  • certificate_requests para representar cada certificado a ser emitido e seus parâmetros.

Recursos adicionais

  • Para detalhes sobre os parâmetros usados na variável certificate_requests e informações adicionais sobre a função do sistema certificate, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.certificate/README.md.
  • Para detalhes sobre as funções do Sistema RHEL e como aplicá-las, consulte Introdução às funções do Sistema RHEL.

8.2. Solicitação de um novo certificado autoassinado utilizando o Sistema de Certificado Função

Com o Papel do Sistema de Certificado, você pode usar o Red Hat Ansible Engine para emitir certificados autoassinados.

Este processo utiliza o provedor certmonger e solicita o certificado através do comando getcert.

Nota

Por padrão, certmonger tenta automaticamente renovar o certificado antes que ele expire. Você pode desabilitar isto definindo o parâmetro auto_renew no livro de jogo Ansible playbook para no.

Pré-requisitos

  • Você tem o Red Hat Ansible Engine instalado no sistema a partir do qual você deseja executar o playbook.

    Nota

    Você não precisa ter o Ansible instalado nos sistemas nos quais você deseja implantar a solução certificate.

  • Você tem o pacote rhel-system-roles instalado no sistema a partir do qual você deseja executar o playbook.

    Para detalhes sobre as funções do Sistema RHEL e como aplicá-las, consulte Introdução às funções do Sistema RHEL.

Procedimento

  1. Optional: Criar um arquivo de inventário, por exemplo inventory.file:

    inventário.file $ touch
  2. Abra seu arquivo de inventário e defina os anfitriões sobre os quais você deseja solicitar o certificado, por exemplo:

    [webserver]
    server.idm.example.com
  3. Criar um arquivo de playbook, por exemplo request-certificate.yml:

    • Defina hosts para incluir os anfitriões sobre os quais você deseja solicitar o certificado, como webserver.
    • Defina a variável certificate_requests para incluir o seguinte:

      • Ajuste o parâmetro name para o nome desejado do certificado, tal como mycert.
      • Defina o parâmetro dns para o domínio a ser incluído no certificado, tal como *.example.com.
      • Ajustar o parâmetro ca para self-sign.
    • Definir o papel do rhel-system-roles.certificate em roles.

      Este é o arquivo do playbook para este exemplo:

      ---
      - hosts: webserver
      
        vars:
          certificate_requests:
            - name: mycert
              dns: *.example.com
              ca: self-sign
      
        roles:
          - rhel-system-roles.certificate
  4. Salvar o arquivo.
  5. Execute o livro de brincadeiras:

    $ ansible-playbook -i inventory.file request-certificate.yml

Recursos adicionais

  • Para detalhes sobre os parâmetros usados na variável certificate_requests e informações adicionais sobre a função do sistema certificate, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.certificate/README.md.
  • Para obter detalhes sobre o comando ansible-playbook, consulte a página de manual ansible-playbook(1).

8.3. Solicitação de um novo certificado da IdM CA usando a função de Sistema de Certificado

Com a função de Sistema de Certificado, você pode usar o Red Hat Ansible Engine para emitir certificados enquanto usa um servidor IdM com uma autoridade de certificado integrada (CA). Portanto, você pode gerenciar eficiente e consistentemente a cadeia de confiança de certificados para múltiplos sistemas ao usar o IdM como a CA.

Este processo utiliza o provedor certmonger e solicita o certificado através do comando getcert.

Nota

Por padrão, certmonger tenta automaticamente renovar o certificado antes que ele expire. Você pode desabilitar isto definindo o parâmetro auto_renew no livro de jogo Ansible playbook para no.

Pré-requisitos

  • Você tem o Red Hat Ansible Engine instalado no sistema a partir do qual você deseja executar o playbook.

    Nota

    Você não precisa ter o Ansible instalado nos sistemas nos quais você deseja implantar a solução certificate.

  • Você tem o pacote rhel-system-roles instalado no sistema a partir do qual você deseja executar o playbook.

    Para detalhes sobre as funções do Sistema RHEL e como aplicá-las, consulte Introdução às funções do Sistema RHEL.

Procedimento

  1. Optional: Criar um arquivo de inventário, por exemplo inventory.file:

    inventário.file $ touch
  2. Abra seu arquivo de inventário e defina os anfitriões sobre os quais você deseja solicitar o certificado, por exemplo:

    [webserver]
    server.idm.example.com
  3. Criar um arquivo de playbook, por exemplo request-certificate.yml:

    • Defina hosts para incluir os anfitriões sobre os quais você deseja solicitar o certificado, como webserver.
    • Defina a variável certificate_requests para incluir o seguinte:

      • Ajuste o parâmetro name para o nome desejado do certificado, tal como mycert.
      • Defina o parâmetro dns para o domínio a ser incluído no certificado, tal como www.example.com.
      • Definir o parâmetro principal para especificar o principal Kerberos, tal como HTTP/www.example.com@EXAMPLE.COM.
      • Ajustar o parâmetro ca para ipa.
    • Definir o papel do rhel-system-roles.certificate em roles.

      Este é o arquivo do playbook para este exemplo:

      ---
      - hosts: webserver
        vars:
          certificate_requests:
            - name: mycert
              dns: www.example.com
              principal: HTTP/www.example.com@EXAMPLE.COM
              ca: ipa
      
        roles:
          - rhel-system-roles.certificate
  4. Salvar o arquivo.
  5. Execute o livro de brincadeiras:

    $ ansible-playbook -i inventory.file request-certificate.yml

Recursos adicionais

  • Para detalhes sobre os parâmetros usados na variável certificate_requests e informações adicionais sobre a função do sistema certificate, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.certificate/README.md.
  • Para obter detalhes sobre o comando ansible-playbook, consulte a página de manual ansible-playbook(1).

8.4. Especificação de comandos para executar antes ou depois da emissão do certificado usando a função do Sistema de Certificado

Com a função de Sistema de Certificado, você pode usar o Red Hat Ansible Engine para executar um comando antes e depois que um certificado seja emitido ou renovado.

No exemplo a seguir, o administrador garante a interrupção do serviço httpd antes que um certificado autoassinado para www.example.com seja emitido ou renovado, e o reinício do serviço posteriormente.

Nota

Por padrão, certmonger tenta automaticamente renovar o certificado antes que ele expire. Você pode desabilitar isto definindo o parâmetro auto_renew no livro de jogo Ansible playbook para no.

Pré-requisitos

  • Você tem o Red Hat Ansible Engine instalado no sistema a partir do qual você deseja executar o playbook.

    Nota

    Você não precisa ter o Ansible instalado nos sistemas nos quais você deseja implantar a solução certificate.

  • Você tem o pacote rhel-system-roles instalado no sistema a partir do qual você deseja executar o playbook.

    Para detalhes sobre as funções do Sistema RHEL e como aplicá-las, consulte Introdução às funções do Sistema RHEL.

Procedimento

  1. Optional: Criar um arquivo de inventário, por exemplo inventory.file:

    inventário.file $ touch
  2. Abra seu arquivo de inventário e defina os anfitriões sobre os quais você deseja solicitar o certificado, por exemplo:

    [webserver]
    server.idm.example.com
  3. Criar um arquivo de playbook, por exemplo request-certificate.yml:

    • Defina hosts para incluir os anfitriões sobre os quais você deseja solicitar o certificado, como webserver.
    • Defina a variável certificate_requests para incluir o seguinte:

      • Ajuste o parâmetro name para o nome desejado do certificado, tal como mycert.
      • Defina o parâmetro dns para o domínio a ser incluído no certificado, tal como www.example.com.
      • Defina o parâmetro ca para a CA que você deseja usar para emitir o certificado, tal como self-sign.
      • Ajuste o parâmetro run_before para o comando que você deseja executar antes da emissão ou renovação deste certificado, tal como systemctl stop httpd.service.
      • Ajuste o parâmetro run_after para o comando que você deseja executar após a emissão ou renovação deste certificado, tal como systemctl start httpd.service.
    • Definir o papel do rhel-system-roles.certificate em roles.

      Este é o arquivo do playbook para este exemplo:

      ---
      - hosts: webserver
        vars:
          certificate_requests:
            - name: mycert
              dns: www.example.com
              ca: self-sign
              run_before: systemctl stop httpd.service
              run_after: systemctl start httpd.service
      
        roles:
          - linux-system-roles.certificate
  4. Salvar o arquivo.
  5. Execute o livro de brincadeiras:

    $ ansible-playbook -i inventory.file request-certificate.yml

Recursos adicionais

  • Para detalhes sobre os parâmetros usados na variável certificate_requests e informações adicionais sobre a função do sistema certificate, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.certificate/README.md.
  • Para obter detalhes sobre o comando ansible-playbook, consulte a página de manual ansible-playbook(1).

Capítulo 9. Configuração do kdump usando as funções do sistema RHEL

Para gerenciar o kdump usando o Ansible, você pode usar a função kdump, que é uma das funções do Sistema RHEL disponível no RHEL 8.

O uso do kdump permite especificar onde salvar o conteúdo da memória do sistema para análise posterior.

Para mais informações sobre os papéis do Sistema RHEL e como aplicá-los, consulte Introdução aos papéis do Sistema RHEL.

9.1. O papel do sistema kdump RHEL

O sistema kdump Papel do sistema permite definir parâmetros básicos de despejo de kernel em vários sistemas.

9.2. Parâmetros do papel Kdump

Os parâmetros utilizados para os papéis do Sistema RHEL kdump são:

Variável de PapelDescrição

kdump_path

O caminho para o qual vmcore está escrito. Se kdump_target não for nulo, o caminho é relativo a esse alvo de despejo. Caso contrário, ele deve ser um caminho absoluto no sistema de arquivos raiz.

Recursos adicionais

  • Veja a página de manual makedump(8).
  • Para detalhes sobre os parâmetros usados em kdump e informações adicionais sobre o Sistema de Papel kdump, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.tlog/README.md.

9.3. Configuração do kdump usando as funções do sistema RHEL

Você pode definir parâmetros básicos do kernel dump em vários sistemas usando o sistema kdump Função do sistema executando um Ansible playbook.

Atenção

A função kdump substitui inteiramente a configuração kdump dos hosts gerenciados, substituindo o arquivo /etc/kdump.conf. Além disso, se a função kdump for aplicada, todas as configurações kdump anteriores também são substituídas, mesmo que não sejam especificadas pelas variáveis da função, substituindo o arquivo /etc/sysconfig/kdump.

Pré-requisitos

  • Você tem o Red Hat Ansible Engine instalado no sistema a partir do qual você deseja executar o playbook.

    Nota

    Você não precisa ter a Plataforma de Automação Possível da Red Hat instalada nos sistemas nos quais você deseja implantar a solução kdump.

  • Você tem o pacote rhel-system-roles instalado no sistema a partir do qual você deseja executar o playbook.
  • Você tem um arquivo de inventário que lista os sistemas nos quais você quer implantar kdump.

Procedimento

  1. Criar um novo playbook.yml arquivo com o seguinte conteúdo:

    ---
    - hosts: kdump-test
      vars:
        kdump_path: /var/crash
      roles:
        - rhel-system-roles.kdump
  2. Opcional: Verificar a sintaxe do playbook.

    # ansible-playbook --syntax-check playbook.yml
  3. Execute o playbook em seu arquivo de inventário:

    # ansible-playbook -i inventory_file /path/to/file/playbook.yml

Recursos adicionais

  • Para uma referência detalhada das variáveis da função kdump, consulte os arquivos README.md ou README.html no diretório /usr/share/doc/rhel-system-roles/kdump.
  • Ver Seção 1.3, “Aplicando um papel”.
  • Documentação instalada com o pacote rhel-system-roles /usr/share/ansible/roles/rhel-system-roles.kdump/README.html

Capítulo 10. Gerenciamento do armazenamento local usando as funções do sistema RHEL

Para gerenciar LVM e sistemas de arquivos locais (FS) usando o Ansible, você pode usar a função storage, que é uma das funções do Sistema RHEL disponível no RHEL 8.

O uso da função storage permite automatizar a administração de sistemas de arquivos em discos e volumes lógicos em múltiplas máquinas e em todas as versões da RHEL, começando com a RHEL 7.7.

Para mais informações sobre os papéis do Sistema RHEL e como aplicá-los, consulte Introdução aos papéis do Sistema RHEL.

10.1. Introdução à função de armazenamento

A função storage pode administrar:

  • Sistemas de arquivos em discos que não foram particionados
  • Grupos completos de volumes LVM incluindo seus volumes lógicos e sistemas de arquivo

Com o papel storage, você pode realizar as seguintes tarefas:

  • Criar um sistema de arquivo
  • Remover um sistema de arquivo
  • Montar um sistema de arquivo
  • Desmontar um sistema de arquivo
  • Criar grupos de volume LVM
  • Remover grupos de volume LVM
  • Criar volumes lógicos
  • Remover volumes lógicos
  • Criar volumes RAID
  • Remover volumes RAID
  • Criar pools LVM com RAID
  • Remover as piscinas LVM com RAID

10.2. Parâmetros que identificam um dispositivo de armazenamento no papel do sistema de armazenamento

Sua configuração de funções storage afeta apenas os sistemas de arquivos, volumes e pools que você lista nas seguintes variáveis.

storage_volumes

Lista de sistemas de arquivos em todos os discos não particionados a serem gerenciados.

Atualmente, as partições não têm suporte.

storage_pools

Lista de piscinas a serem administradas.

Atualmente, o único tipo de piscina suportada é a LVM. Com LVM, os pools representam grupos de volume (VGs). Sob cada pool há uma lista de volumes a serem gerenciados pela função. Com o LVM, cada volume corresponde a um volume lógico (LV) com um sistema de arquivo.

10.3. Exemplo Livro de reprodução possível para criar um sistema de arquivo XFS em um dispositivo de bloco

Esta seção fornece um exemplo de um livro de brincadeiras possível. Este playbook aplica o papel storage para criar um sistema de arquivos XFS em um dispositivo de bloco usando os parâmetros padrão.

Atenção

A função storage pode criar um sistema de arquivo somente em um disco não particionado, inteiro ou em um volume lógico (LV). Ele não pode criar o sistema de arquivo em uma partição.

Exemplo 10.1. Um playbook que cria XFS em /dev/sdb

---
- hosts: all
  vars:
    storage_volumes:
      - name: barefs
        type: disk
        disks:
          - sdb
        fs_type: xfs
  roles:
    - rhel-system-roles.storage
  • O nome do volume (barefs no exemplo) é atualmente arbitrária. A função storage identifica o volume pelo dispositivo de disco listado sob o atributo disks:.
  • Você pode omitir a linha fs_type: xfs porque XFS é o sistema de arquivo padrão no RHEL 8.
  • Para criar o sistema de arquivo em um LV, forneça a configuração LVM sob o atributo disks:, incluindo o grupo de volume envolvente. Para detalhes, veja Exemplo Livro de exemplo para gerenciar volumes lógicos.

    Não forneça o caminho para o dispositivo LV.

Recursos adicionais

  • Para detalhes sobre os parâmetros utilizados na função do sistema storage, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.storage/README.md.

10.4. Exemplo Livro de reprodução possível para montar persistentemente um sistema de arquivo

Esta seção fornece um exemplo de um livro de brincadeiras possível. Este playbook aplica o papel storage para montar imediata e persistentemente um sistema de arquivos XFS.

Exemplo 10.2. Um playbook que monta um sistema de arquivo em /dev/sdb para /mnt/dados

---
- hosts: all
  vars:
    storage_volumes:
      - name: barefs
        type: disk
        disks:
          - sdb
        fs_type: xfs
        mount_point: /mnt/data
  roles:
    - rhel-system-roles.storage
  • Este playbook adiciona o sistema de arquivo ao arquivo /etc/fstab, e monta o sistema de arquivo imediatamente.
  • Se o sistema de arquivo no dispositivo /dev/sdb ou o diretório de pontos de montagem não existir, o playbook os cria.

Recursos adicionais

  • Para detalhes sobre os parâmetros utilizados na função do sistema storage, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.storage/README.md.

10.5. Exemplo Livro de exercícios possível para gerenciar volumes lógicos

Esta seção fornece um exemplo de um livro de brincadeiras possível. Este playbook aplica o papel storage para criar um volume lógico LVM em um grupo de volumes.

Exemplo 10.3. Um playbook que cria um volume lógico mylv no grupo de volume myvg

- hosts: all
  vars:
    storage_pools:
      - name: myvg
        disks:
          - sda
          - sdb
          - sdc
        volumes:
          - name: mylv
            size: 2G
            fs_type: ext4
            mount_point: /mnt
  roles:
    - rhel-system-roles.storage
  • O grupo de volume myvg é composto pelos seguintes discos:

    • /dev/sda
    • /dev/sdb
    • /dev/sdc
  • Se o grupo de volume myvg já existe, o playbook adiciona o volume lógico ao grupo de volume.
  • Se o grupo de volume myvg não existe, o playbook o cria.
  • O playbook cria um sistema de arquivo Ext4 no volume lógico mylv e monta persistentemente o sistema de arquivo em /mnt.

Recursos adicionais

  • Para detalhes sobre os parâmetros utilizados na função do sistema storage, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.storage/README.md.

10.6. Exemplo Livro de reprodução possível para permitir o descarte em bloco online

Esta seção fornece um exemplo de um livro de brincadeiras possível. Este playbook aplica o papel storage para montar um sistema de arquivo XFS com o descarte de blocos on-line habilitado.

Exemplo 10.4. Um playbook que permite o descarte de blocos online em /mnt/dados/

---
- hosts: all
  vars:
    storage_volumes:
      - name: barefs
        type: disk
        disks:
          - sdb
        fs_type: xfs
        mount_point: /mnt/data
        mount_options: discard
  roles:
    - rhel-system-roles.storage

Recursos adicionais

  • Para detalhes sobre os parâmetros utilizados na função do sistema storage, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.storage/README.md.

10.7. Exemplo Livro de reprodução possível para criar e montar um sistema de arquivo Ext4

Esta seção fornece um exemplo de um livro de brincadeiras possível. Este playbook aplica o papel storage para criar e montar um sistema de arquivos Ext4.

Exemplo 10.5. Um playbook que cria Ext4 em /dev/sdb e o monta em /mnt/dados

---
- hosts: all
  vars:
    storage_volumes:
      - name: barefs
        type: disk
        disks:
          - sdb
        fs_type: ext4
        fs_label: label-name
        mount_point: /mnt/data
  roles:
    - rhel-system-roles.storage
  • O playbook cria o sistema de arquivos no disco /dev/sdb.
  • O playbook monta persistentemente o sistema de arquivo no /mnt/data diretório.
  • A etiqueta do sistema de arquivo é label-name.

Recursos adicionais

  • Para detalhes sobre os parâmetros utilizados na função do sistema storage, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.storage/README.md.

10.8. Exemplo Livro de reprodução possível para criar e montar um sistema de arquivo ext3

Esta seção fornece um exemplo de um livro de brincadeiras possível. Este playbook aplica o papel storage para criar e montar um sistema de arquivos Ext3.

Exemplo 10.6. Um playbook que cria Ext3 em /dev/sdb e o monta em /mnt/dados

---
- hosts: all
  vars:
    storage_volumes:
      - name: barefs
        type: disk
        disks:
          - sdb
        fs_type: ext3
        fs_label: label-name
        mount_point: /mnt/data
  roles:
    - rhel-system-roles.storage
  • O playbook cria o sistema de arquivos no disco /dev/sdb.
  • O playbook monta persistentemente o sistema de arquivo no /mnt/data diretório.
  • A etiqueta do sistema de arquivo é label-name.

Recursos adicionais

  • Para detalhes sobre os parâmetros utilizados na função do sistema storage, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.storage/README.md.

10.9. Configuração de um volume RAID utilizando a função do sistema de armazenamento

Com o Sistema Função storage, você pode configurar um volume RAID na RHEL usando a Plataforma de Automação Possível Red Hat Ansible Automation. Nesta seção, você aprenderá como configurar um livro de jogo possível com os parâmetros disponíveis para configurar um volume RAID de acordo com suas necessidades.

Pré-requisitos

  • Você tem o Red Hat Ansible Engine instalado no sistema a partir do qual você deseja executar o playbook.

    Nota

    Você não precisa ter a Plataforma de Automação Possível da Red Hat instalada nos sistemas nos quais você deseja implantar a solução storage.

  • Você tem o pacote rhel-system-roles instalado no sistema a partir do qual você deseja executar o playbook.
  • Você tem um arquivo de inventário detalhando os sistemas nos quais você deseja implantar um volume RAID usando o sistema storage Função do sistema.

Procedimento

  1. Criar um novo playbook.yml arquivo com o seguinte conteúdo:

    - hosts: all
      vars:
        storage_safe_mode: false
        storage_volumes:
          - name: data
            type: raid
            disks: [sdd, sde, sdf, sdg]
            raid_level: raid0
            raid_chunk_size: 32 KiB
            mount_point: /mnt/data
            state: present
      roles:
        - name: rhel-system-roles.storage
    Atenção

    Os nomes dos dispositivos podem mudar em certas circunstâncias; por exemplo, quando você adiciona um novo disco a um sistema. Portanto, para evitar a perda de dados, não recomendamos o uso de nomes de disco específicos no livro de reprodução.

  2. Opcional. Verificar a sintaxe do playbook.

    # ansible-playbook --syntax-check playbook.yml
  3. Execute o playbook em seu arquivo de inventário:

    # ansible-playbook -i inventory.file /path/to/file/playbook.yml

Recursos adicionais

  • Para mais informações sobre o RAID, consulte Gerenciando RAID.
  • Para detalhes sobre os parâmetros utilizados na função do sistema de armazenamento, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.storage/README.md.

10.10. Configuração de um pool LVM com RAID utilizando a função de sistema de armazenamento

Com o Sistema Função storage, você pode configurar um pool LVM com RAID na RHEL usando a Plataforma de Automação Possível da Red Hat. Nesta seção você aprenderá como configurar um playbook Ansible com os parâmetros disponíveis para configurar um pool LVM com RAID.

Pré-requisitos

  • Você tem o Red Hat Ansible Engine instalado no sistema a partir do qual você deseja executar o playbook.

    Nota

    Você não precisa ter a Plataforma de Automação Possível da Red Hat instalada nos sistemas nos quais você deseja implantar a solução storage.

  • Você tem o pacote rhel-system-roles instalado no sistema a partir do qual você deseja executar o playbook.
  • Você tem um arquivo de inventário detalhando os sistemas nos quais você deseja configurar um pool LVM com RAID usando o sistema storage Função do sistema.

Procedimento

  1. Criar um novo playbook.yml arquivo com o seguinte conteúdo:

    - hosts: all
      vars:
        storage_safe_mode: false
        storage_pools:
          - name: my_pool
            type: lvm
            disks: [sdh, sdi]
            raid_level: raid1
            volumes:
              - name: my_pool
                size: "1 GiB"
                mount_point: "/mnt/app/shared"
                fs_type: xfs
                state: present
      roles:
        - name: rhel-system-roles.storage
    Nota

    Para criar um pool LVM com RAID, você deve especificar o tipo de RAID usando o parâmetro raid_level.

  2. Opcional. Verificar a sintaxe do playbook.

    # ansible-playbook --syntax-check playbook.yml
  3. Execute o playbook em seu arquivo de inventário:

    # ansible-playbook -i inventory.file /path/to/file/playbook.yml

Recursos adicionais

  • Para mais informações sobre o RAID, consulte Gerenciando RAID.
  • Para detalhes sobre os parâmetros utilizados na função do sistema de armazenamento, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.storage/README.md.

10.11. Criação de um volume codificado LUKS usando a função de armazenamento

Você pode usar o papel storage para criar e configurar um volume criptografado com LUKS, executando um livro de brincadeiras Ansible playbook.

Pré-requisitos

  • Você tem o Red Hat Ansible Engine instalado no sistema a partir do qual você deseja executar o playbook.

    Nota

    Você não precisa ter a Plataforma de Automação Possível da Red Hat instalada nos sistemas nos quais você deseja criar o volume.

  • Você tem o pacote rhel-system-roles instalado no controlador Ansible.
  • Você tem um arquivo de inventário detalhando os sistemas nos quais você deseja implantar um volume codificado LUKS usando a função de sistema de armazenamento.

Procedimento

  1. Criar um novo playbook.yml arquivo com o seguinte conteúdo:

    - hosts: all
      vars:
        storage_volumes:
          - name: barefs
            type: disk
            disks:
             - sdb
            fs_type: xfs
            fs_label: label-name
            mount_point: /mnt/data
            encryption: true
            encryption_password: your-password
      roles:
       - rhel-system-roles.storage
  2. Opcional. Verificar a sintaxe do playbook:

    # ansible-playbook --syntax-check playbook.yml
  3. Execute o playbook em seu arquivo de inventário:

    # ansible-playbook -i inventory.file /path/to/file/playbook.yml

Recursos adicionais

Recursos adicionais

  • Para mais informações, instale o pacote rhel-system-roles e veja os seguintes diretórios:

    • /usr/share/doc/rhel-system-roles/storage/
    • /usr/share/ansible/roles/rhel-system-roles.storage/

Capítulo 11. Configuração de sincronização de tempo usando as funções do sistema RHEL

Com a Função do Sistema RHEL timesync, você pode gerenciar a sincronização de tempo em múltiplas máquinas alvo na RHEL usando a Plataforma de Automação Possível da Red Hat.

11.1. O papel do Sistema Timesync

Você pode gerenciar a sincronização de tempo em várias máquinas alvo usando a função timesync RHEL System Role.

A função timesync instala e configura uma implementação NTP ou PTP para operar como um cliente NTP ou réplica PTP a fim de sincronizar o relógio do sistema com servidores NTP ou grandmasters nos domínios PTP.

Note que o uso do papel timesync também facilita a migração para o chrony, porque você pode usar o mesmo playbook em todas as versões do Red Hat Enterprise Linux começando com o RHEL 6, independentemente do sistema usar ntp ou chrony para implementar o protocolo NTP.

11.2. Aplicando o papel do sistema timesync para um único pool de servidores

O exemplo a seguir mostra como aplicar o papel timesync em uma situação com apenas um pool de servidores.

Atenção

A função timesync substitui a configuração do serviço de provedor dado ou detectado no host administrado. As configurações anteriores são perdidas, mesmo que não estejam especificadas nas variáveis de função. A única configuração preservada é a escolha do provedor se a variável timesync_ntp_provider não estiver definida.

Pré-requisitos

  • Você tem o Red Hat Ansible Engine instalado no sistema a partir do qual você deseja executar o playbook.

    Nota

    Você não precisa ter a Plataforma de Automação Possível da Red Hat instalada nos sistemas nos quais você deseja implantar a solução timesync.

  • Você tem o pacote rhel-system-roles instalado no sistema a partir do qual você deseja executar o playbook.
  • Você tem um arquivo de inventário que lista os sistemas nos quais você deseja implantar timesync Função do Sistema.

Procedimento

  1. Criar um novo playbook.yml arquivo com o seguinte conteúdo:

    ---
    - hosts: timesync-test
      vars:
        timesync_ntp_servers:
          - hostname: 2.rhel.pool.ntp.org
            pool: yes
            iburst: yes
      roles:
        - rhel-system-roles.timesync
  2. Opcional: Verificar a sintaxe do playbook.

    # ansible-playbook --syntax-check playbook.yml
  3. Execute o playbook em seu arquivo de inventário:

    # ansible-playbook -i inventory_file /path/to/file/playbook.yml

11.3. Timesync Variáveis dos papéis do sistema

Você pode passar a seguinte variável para a função timesync:

  • timesync_ntp_servers:
Configurações das variáveis de papelDescrição

hostname: host.example.com

Nome ou endereço do servidor

minpoll number

Intervalo mínimo de sondagem. Default: 6

maxpoll number

Intervalo máximo de sondagem. Default: 10

iburst: sim

Bandeira que permite uma rápida sincronização inicial. Default: não

piscina: sim

Bandeira indicando que cada endereço resolvido do hostname é um servidor NTP separado. Default: não

Recursos adicionais

  • Para uma referência detalhada sobre as variáveis de função timesync, instale o pacote rhel-system-roles, e veja os arquivos README.md ou README.html no diretório /usr/share/doc/rhel-system-roles/timesync.

Capítulo 12. Monitoramento do desempenho usando os papéis do Sistema RHEL

12.1. Introdução ao sistema métrico Papel do sistema

As funções do sistema RHEL são um conjunto de funções e módulos possíveis que fornecem uma interface de configuração consistente para gerenciar remotamente vários sistemas RHEL. A função do sistema de métricas configura serviços de análise de desempenho para o sistema local e, opcionalmente, inclui uma lista de sistemas remotos a serem monitorados pelo sistema local. O sistema de métricas System Role permite que você use pcp para monitorar o desempenho de seus sistemas sem ter que configurar pcp separadamente, já que a configuração e implantação de pcp é tratada pelo playbook.

Tabela 12.1. Variáveis de papel do sistema métrico

Função variávelDescriçãoExemplo de uso

métricas_monitoradas_hosts

Lista de hospedeiros remotos a serem analisados pelo hospedeiro alvo. Estes anfitriões terão métricas registradas no anfitrião alvo, portanto, certifique-se de que existe espaço suficiente em disco abaixo de /var/log para cada anfitrião.

metrics_monitored_hosts: ["webserver.example.com", "database.example.com"]

dias_de_retenção_métrica

Configura o número de dias para retenção de dados de desempenho antes da exclusão.

metrics_retention_days: 14

metrics_graph_service

Uma bandeira booleana que permite a instalação do host com serviços de visualização de dados de desempenho via pcp e grafana. Definido como falso por padrão.

metrics_graph_service: false

métrica_consulta_serviço

Uma bandeira booleana que permite configurar o host com serviços de consulta de séries temporais para consulta de métricas registradas pcp via redis. Definido como falso por padrão.

metrics_query_service: false

metrics_provider

Especifica qual métrica coletor a ser usada para fornecer métricas. Atualmente, pcp é o único fornecedor de métricas suportado.

metrics_provider: "pcp"

Recursos adicionais

  • para detalhes sobre os parâmetros usados em metrics_connections e informações adicionais sobre a função do sistema métrico, veja o arquivo /usr/share/ansible/roles/rhel-system-roles.metrics/README.md.

12.2. Usando o sistema métrico Função do sistema para monitorar seu sistema local com visualização

Este procedimento descreve como usar a métrica RHEL System Role para monitorar seu sistema local enquanto simultaneamente fornece a visualização de dados via grafana.

Pré-requisitos

  • Você tem o Red Hat Ansible Engine instalado na máquina que você deseja monitorar.
  • Você tem o pacote rhel-system-roles instalado na máquina que você deseja monitorar.

Procedimento

  1. Configurar localhost no site /etc/ansible/hosts Inventário possível, adicionando o seguinte conteúdo ao inventário:

    localhost ansible_connection=local
  2. Crie um livro de jogo possível com o seguinte conteúdo:

    ---
    - hosts: localhost
      vars:
        metrics_graph_service: yes
      roles:
        - rhel-system-roles.metrics
  3. Execute o livro de jogo Ansible playbook:

    # ansible-playbook name_of_your_playbook.yml
    Nota

    Como o metrics_graph_service boolean está configurado para value="yes", grafana é automaticamente instalado e provisionado com pcp adicionado como fonte de dados.

  4. Para visualizar a visualização das métricas que estão sendo coletadas em sua máquina, acesse a interface web grafana como descrito em Accessing the Grafana web UI.

12.3. Usando o sistema métrico Função do sistema para configurar uma frota de sistemas individuais para monitorar a si mesmos

Este procedimento descreve como usar o sistema métrico Papel do sistema para montar uma frota de máquinas para monitorar a si mesmos.

Pré-requisitos

  • Você tem o Red Hat Ansible Engine instalado na máquina que você deseja usar para executar o playbook.
  • Você tem o pacote rhel-system-roles instalado na máquina que você deseja usar para executar o playbook.

Procedimento

  1. Adicione o nome ou IP das máquinas que você deseja monitorar através do playbook ao arquivo /etc/ansible/hosts. Um possível arquivo de inventário com um nome de grupo identificador entre parênteses:

    [remotes]
    webserver.example.com
    database.example.com
  2. Crie um livro de jogo possível com o seguinte conteúdo:

    ---
    - hosts: remotes
      vars:
        metrics_retention_days: 0
      roles:
        - rhel-system-roles.metrics
  3. Execute o livro de jogo Ansible playbook:

    # ansible-playbook name_of_your_playbook.yml

12.4. Usando o sistema métrico Papel do sistema para monitorar uma frota de máquinas de forma centralizada através de sua máquina local

Este procedimento descreve como usar o sistema de métricas Função do sistema para configurar sua máquina local para monitorar centralmente uma frota de máquinas, ao mesmo tempo em que fornece a visualização dos dados via grafana e consulta dos dados via redis.

Pré-requisitos

  • Você tem o Red Hat Ansible Engine instalado na máquina que você deseja usar para executar o playbook.
  • Você tem o pacote rhel-system-roles instalado na máquina que você deseja usar para executar o playbook.

Procedimento

  1. Crie um livro de jogo possível com o seguinte conteúdo:

    ---
    - hosts: localhost
      vars:
        metrics_graph_service: yes
        metrics_query_service: yes
        metrics_retention_days: 10
        metrics_monitored_hosts: ["database.example.com", "webserver.example.com"]
      roles:
        - rhel-system-roles.metrics
  2. Execute o livro de jogo Ansible playbook:

    # ansible-playbook name_of_your_playbook.yml
    Nota

    Como as booleans metrics_graph_service e metrics_query_service estão configuradas para value="yes", grafana é automaticamente instalado e provisionado com pcp adicionado como fonte de dados com o registro de dados pcp indexado em redis, permitindo que a linguagem de consulta pcp seja usada para consulta complexa dos dados.

  3. Para visualizar a representação gráfica das métricas que estão sendo coletadas centralmente por sua máquina e para consultar os dados, acesse a interface web grafana conforme descrito em Accessing the Grafana web UI.

Capítulo 13. Configuração de um sistema para gravação de sessões usando o tlog RHEL Roles System

Com a Função do Sistema RHEL tlog, você pode configurar um sistema para gravação de sessão terminal na RHEL usando a Plataforma de Automação Possível da Red Hat.

13.1. O papel do sistema tlog

Você pode configurar um sistema RHEL para gravação de sessão terminal na RHEL usando o sistema tlog Função do sistema RHEL. O pacote tlog e seu leitor de sessões do console web associado oferecem a você a possibilidade de gravar e reproduzir sessões de terminal de usuário.

Você pode configurar a gravação para ser feita por usuário ou grupo de usuários através do serviço SSSD. Todas as entradas e saídas dos terminais são capturadas e armazenadas em um formato de texto no diário do sistema.

Recursos adicionais

13.2. Componentes e parâmetros do sistema tlog Funções do sistema

A solução de gravação da sessão é composta dos seguintes componentes:

  • O utilitário tlog
  • Daemon System Security Services (SSSD)
  • Opcional: A interface do console web

Os parâmetros utilizados para o tlog RHEL System Roles são:

Variável de PapelDescrição

tlog_use_sssd (padrão: sim)

Configurar a gravação da sessão com SSSD, a forma preferida de gerenciar usuários ou grupos gravados

tlog_scope_sssd (default: nenhum)

Configurar o escopo de gravação SSSD - todos / alguns / nenhum

tlog_users_sssd (padrão: [])

Lista de usuários YAML a serem registrados

tlog_groups_sssd (padrão: [])

YAML lista de grupos a serem registrados

  • Para detalhes sobre os parâmetros usados em tlog e informações adicionais sobre o papel do sistema tlog, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.tlog/README.md.

13.3. Implementando o sistema tlog RHEL Função

Siga estas etapas para preparar e aplicar um livro de exercícios possível para configurar um sistema RHEL para registrar os dados de registro no diário do sistema.

Pré-requisitos

  • Você definiu chaves SSH para acesso do nó de controle ao sistema alvo onde o sistema tlog Função do sistema será configurado.
  • Você tem um nó de controle, que é um sistema a partir do qual o Motor Possível configura os outros sistemas.
  • Você tem o Red Hat Ansible Engine instalado no nó de controle, a partir do qual você quer executar o playbook.
  • Você tem o pacote rhel-system-roles instalado no nó de controle a partir do qual você deseja executar o playbook.
  • Você tem pelo menos um sistema que você deseja configurar o Sistema de Papel tlog. Você não precisa ter a Plataforma de Automação Possível da Red Hat instalada nos sistemas nos quais você deseja implantar a solução tlog.

Procedimento

  1. Criar um novo playbook.yml arquivo com o seguinte conteúdo:

    ---
    - name: Deploy session recording
      hosts: all
      vars:
        tlog_scope_sssd: some
        tlog_users_sssd:
          - recordeduser
    
      roles:
        - rhel-system-roles.tlog

    Onde,

    • tlog_scope_sssd:

      • some especifica que você deseja registrar apenas certos usuários e grupos, não all ou none.
    • tlog_users_sssd:

      • recordeduser especifica o usuário de quem você deseja gravar uma sessão. Note que isto não adiciona o usuário para você. Você deve definir o usuário por si mesmo.
  2. Opcionalmente, verificar a sintaxe do playbook.

    # ansible-playbook --syntax-check playbook.yml
  3. Execute o playbook em seu arquivo de inventário:

    # ansible-playbook -i IP_Address /path/to/file/playbook.yml -v

Como resultado, o playbook instala o papel tlog no sistema que você especificou. Ele também cria um arquivo drop de configuração SSSD que pode ser usado pelos usuários e grupos que você definir. O SSSD analisa e lê estes usuários e grupos para sobrepor a sessão tlog como o usuário shell. Além disso, se o pacote cockpit estiver instalado no sistema, o playbook também instala o pacote cockpit-session-recording, que é um módulo Cockpit que permite visualizar e reproduzir gravações na interface do console web.

Etapas de verificação

Para verificar se o arquivo de configuração SSSD é criado no sistema, execute os seguintes passos:

  1. Navegue até a pasta onde o arquivo de configuração SSSD é criado:

    # cd /etc/sssd/conf.d
  2. Verifique o conteúdo do arquivo:

    # cat /etc/sssd/conf.d/sssd-session-recording.conf

Você pode ver que o arquivo contém os parâmetros que você definiu no playbook.

13.4. Gravação de uma sessão usando o papel do sistema tlog implantado no CLI

Uma vez implantado o sistema tlog Função do sistema no sistema que você especificou, você é capaz de gravar uma sessão terminal de usuário usando a interface de linha de comando (CLI).

Pré-requisitos

  • Você implantou o sistema tlog Papel do sistema no sistema alvo.
  • O arquivo de configuração SSSD foi criado no arquivo /etc/sssd/conf.d.

Procedimento

  1. Criar um usuário e atribuir uma senha para este usuário:

    # useradd recordeduser
    # passwd recordeduser 
  2. Relogie-se ao sistema como o usuário que você acabou de criar:

    # ssh recordeduser@localhost
  3. Digite "sim" quando o sistema solicitar que você digite sim ou não para autenticar.
  4. Insira a senha recordeduser’s.

    O sistema solicita uma mensagem para informar que sua sessão está sendo gravada.

    ATENÇÃO! Sua sessão está sendo gravada!
  5. Uma vez terminada a gravação da sessão, digite:

    # saída

    O sistema se desconecta do usuário e fecha a conexão com o anfitrião local.

Como resultado, a sessão do usuário é gravada, armazenada e você pode reproduzi-la usando um diário.

Etapas de verificação

Para ver sua sessão gravada na revista, siga os seguintes passos:

  1. Execute o comando abaixo:

    # journalctl -o verbose -r
  2. Pesquise o campo MESSAGE do registro de diário registrado tlog-rec.

13.5. Assistir a uma sessão gravada utilizando o CLI

Você pode reproduzir uma gravação de sessão do usuário a partir de um diário usando a interface de linha de comando (CLI).

Procedimento

  1. No terminal CLI, reproduza a gravação da sessão do usuário:

    # journalctl -o verbose -r
  2. Procure a gravação em tlog:

    $ /tlog-rec

    Você pode ver detalhes tais como:

    • O nome de usuário para a gravação da sessão do usuário
    • O campo out_txt, um codificador de saída bruta da sessão gravada
    • O número identificador TLOG_REC=ID_number
  3. Copie o número identificador TLOG_REC=ID_number.
  4. Reproduzir a gravação usando o número identificador TLOG_REC=ID_number.

    # tlog-play -r journal -M TLOG_REC=ID_number

Como resultado, você pode ver a saída do terminal de gravação da sessão do usuário sendo reproduzida.