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.