Passeio espacial no Natal

Olá Habr!

Pouco antes do Natal, decidiu-se estudar o Spacewalk no departamento de TI - este é o sistema Red Hat, um análogo gratuito do Satellite, para gerenciamento centralizado da configuração, atualizações do sistema e suporte conveniente para todo o parque de servidores.

Devido ao fato de a documentação disponível no site oficial ser bastante escassa para comentários adicionais de vários tipos de solução de problemas, a tarefa era estudar o produto para sua introdução gradual primeiro nos servidores de teste e, posteriormente, nos produtos.

A idéia principal de introduzir o Spacewalk não era apenas a centralização e simplificação do controle, mas também para que ninguém reproduzisse atualizações nos servidores do novo projeto com canetas divertidas, já que os precedentes já aconteceram.

Após duas semanas de trabalho, todo o conhecimento que recebi foi inserido no análogo interno do Confluence, e um dia de folga gratuito me levou a escrever um artigo sobre Habr.

Antes de começar, gostaria de destacar brevemente o que foi e não foi afetado, para não pretender um manual completo para trabalhar com o Spacewalk:

+ Instalação e configuração do servidor / cliente
+ Configuração do sistema na GUI
Solucionar problemas de instalação / atualização de pacotes, trabalhar com configurações
+ Errata (coleta de informações sobre atualizações críticas, vulnerabilidades etc.)

- Proxy (a necessidade desapareceu, depois de desistir da HA)
- sapateiro / kickstart
- OpenSCAP

Requisitos de sistema


Devido ao fato de toda a infraestrutura ser executada no VMWare, o trabalho foi realizado em uma VM executando o CentOS 7. Os requisitos de sistema recomendados pelo desenvolvedor são:

  • 4GB RAM
  • 6 GB de espaço livre para / var / satellite /
  • 12 GB para DB

Eu usei:

  • 6GB RAM
  • 4 CPU (s)
  • HD de 40GB

Também aconselho a desativar o SELinux e, se não estiver usando, o firewalld. Ou adicione o serviço http às exceções.

Nota: no final do artigo, haverá playbooks para o Ansible, tanto para as partes do cliente quanto do servidor, além de scripts bash. Com a ajuda deles, será possível implantar toda a infraestrutura em alguns minutos.

Instalação


A instalação em si é descrita na documentação oficial e em vários sites, no entanto, para a integridade do artigo, deixe-me mencionar este ponto aqui.

O Spacewalk trabalha com dois DBMSs: PostgreSQL e Oracle RDBMS. Eu tenho experiência com o primeiro e vou usá-lo agora.

Existem duas opções de instalação: através do instalador automático do Spacewalk, que instalará e configurará a si próprio e o banco de dados, no entanto, no mesmo servidor, e a instalação manual, onde você poderá colocar o banco de dados e o aplicativo em servidores diferentes. Vou considerar as duas opções, começarei com uma instalação separada.

PostgreSQL


yum install -y postgresql-server 

Também é necessário conectar os módulos PL / Tcl para PG:

 yum install -y postgresql-pltcl postgresql-setup initdb systemctl start postgresql 

Crie um banco de dados, um usuário e conecte o módulo:

 su - postgres -c 'PGPASSWORD=verystrong; createdb spcwlkdb ; createlang plpgsql spcwlkdb ; createlang pltclu spcwlkdb ; yes $PGPASSWORD | createuser -P -sDR spcwlkuser' 

Para evitar problemas de conexão, vale a pena alterar /var/lib/pgsql/data/pg_hba.conf , adicionando as linhas ANTES da linha all:

 local spcwlkdb spcwlkuser md5 host spcwlkdb spcwlkuser 127.0.0.1/8 md5 local spcwlkdb postgres ident 

Reinicie tudo:

 systemctl restart postgresql 

Se você pretende instalar o aplicativo e o banco de dados em servidores diferentes, verifique se o pacote postgresql-contrib está instalado no servidor de banco de dados.

Passeio espacial


Conectamos repositórios:

 rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8/epel-7-x86_64/00736372-spacewalk-repo/spacewalk-repo-2.8-11.el7.centos.noarch.rpm 

Conecte também a epel:

 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 

Java:

 (cd /etc/yum.repos.d && curl -O https://copr.fedorainfracloud.org/coprs/g/spacewalkproject/java-packages/repo/epel-7/group_spacewalkproject-java-packages-epel-7.repo) 

Agora, diretamente o instalador do Spacewalk-postgres:

 yum -y install spacewalk-setup-postgresql 

Conecte-se ao nosso banco de dados:

 spacewalk-setup-postgresql create --db spcwlkdb --user spcwlkuser --password verystrong 

No caso de você estar usando um método de banco de dados / aplicativo separado, será necessário adicionar o sinalizador --standalone e especificar o endereço IP do servidor de banco de dados, também não se esqueça de abrir a porta 5432.

Nota: Aconselho ajustar o banco de dados de acordo com o seu hardware para uma operação mais produtiva de todo o sistema.

Agora instale o próprio Spacewalk e execute a instalação:

 yum -y install spacewalk-postgresql spacewalk-setup --external-postgresql 

Em seguida, várias perguntas serão feitas, tanto em relação ao certificado SSL quanto ao banco de dados. Você pode inserir todos os valores manualmente ou usar o sinalizador --answer-file e especificar o caminho para o arquivo com respostas para automatizar a instalação no futuro:

 admin-email = root@localhost ssl-set-cnames = spcwlkserver ssl-set-org = Unicorn ssl-set-org-unit = EOH ssl-set-city = Prague ssl-set-state = HMP ssl-set-country = CZ ssl-password = verystrong ssl-set-email = root@localhost ssl-config-sslvhost = Y db-backend=postgresql db-name=spcwlkdb db-user=spcwlkuser db-password=verystrong db-host=localhost db-port=5432 enable-tftp=Y 

Para controlar o aplicativo diretamente, você deve usar:

 /usr/sbin/spacewalk-service [stop|start|restart] 

Para exibir todos os serviços de terceiros que contribuem para o aplicativo:

 spacewalk-service status 

Opção dois, instalação automática


Após conectar os repositórios, configure e execute:

 yum -y install spacewalk-setup-postgresql yum -y install spacewalk-postgresql spacewalk-setup 

Novamente, serão feitas perguntas sobre o banco de dados e o SSL, usamos a chave --answer-file e o caminho para o arquivo com as respostas.

Canais de Base e Criança, Repos


Para gerenciar estações clientes, o Spacewalk usa um sistema dos chamados canais, que podem ser principal (filho) ou filho (filho), um repositório necessário é anexado a cada canal, além de uma chave - com a qual o cliente está emparelhado servidor.

Como resultado, os repositórios são sincronizados com os canais, que, por sua vez, estão conectados aos clientes, e o Spacewalk funciona de maneira geral. Também é preciso mencionar as erratas, que podem ser vinculadas aos canais, o que simplifica a atualização e o controle de pacotes.

Todos os clientes podem ser agrupados de acordo com vários critérios, com os mesmos canais e com diferentes canais ou repositórios.É possível trabalhar com um grande número de clientes por vez, o que ajuda a fazer atualizações em mais de 100 servidores.

Uma lista de todos os pacotes instalados está disponível e após a sincronização dos repositórios e possível para instalação. Alguns pontos são intuitivos e não faz sentido considerar cada item linha por linha.

Todas as ações no Spacewalk ocorrem em uma programação (Agenda), quase qualquer ação pode ser configurada para o horário que for mais conveniente para você.

Após a instalação, será possível acessar o endereço do seu servidor, realizar outras configurações através da interface gráfica:



Digite a senha, o nome do administrador, o nome da organização (que também é uma das maneiras de gerenciar clientes) e vá para o painel inicial.

Por enquanto, você pode explorar as opções disponíveis ou criar canais.

Canais - Gerenciar Canais de Software - Criar Canal:



Eu recomendo definir os nomes dos canais de acordo com os tipos e tipos de SO que serão vinculados a esse canal, por exemplo, CentOS_7_x86_64 , você pode escolher com segurança sha256 como verificações, o campo Channell Summary destina-se a uma pequena descrição do canal. Além disso, você pode opcionalmente fornecer informações adicionais.

Agora crie um canal filho e vincule-o ao canal principal. Iremos da mesma maneira que a criação do canal principal; somente no campo Canal Pai, indicaremos o canal criado anteriormente.

Ligue os repositórios aos canais principais e subsidiários.
Canais - Gerenciar Repositórios



Para os principais canais, eu uso os Recursos de Base, para os canais subsidiários - Atualizações.

Após criar os repositórios, você precisa conectá-los aos canais.
Canais - gerencie canais de software , abra seu canal principal, abra a seção Repositórios.



Haverá todos os repositórios criados, selecione o que você precisa, marque-o e clique em Atualizar Recursos.

Em seguida, abra a subchave Sync:



Onde você pode sincronizar o repositório e o canal, configure o agendamento da sincronização.

Nota: no meu caso de canetas divertidas, tive que excluir o repositório padrão do sistema do cliente.

Instalação do cliente, emparelhando o cliente com o servidor, gerenciamento de chaves, configurando o canal de configuração


Como mencionei anteriormente, o Spacewalk usa um sistema de chaves da Red Hat Network, que é usado para emparelhamento e gerenciamento.

Para criar uma chave, vá para Sistemas - Chaves de Ativação - Criar Chave:



Tudo é extremamente simples aqui, vale a pena mencionar que você mesmo pode definir a chave, seu formato sempre será 1-XXXXXX e, além disso, cada chave é anexada ao canal. O sinalizador Universal Default força novos sistemas a selecionar os principais parâmetros.

Instalação do cliente

Conecte o repositório do cliente e instale os pacotes necessários:

 rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8-client/epel-7-x86_64/00742644-spacewalk-repo/spacewalk-client-repo-2.8-11.el7.centos.noarch.rpm yum -y install rhn-client-tools rhn-check rhn-setup rhnsd m2crypto yum-rhn-plugin rhncfg-actions deltarpm 


Nota: rhncfg-actions e deltarpm são necessários para que as configurações e o controle remoto funcionem corretamente.

O Spacewalk usa rhn_check para sincronizar o servidor do cliente, que é executado a cada 4 horas. Esse valor pode ser reduzido para 60 minutos, mas para mim nenhuma das opções era ótima, portanto, existem duas opções: use osad, que acompanha o Spacewalk, ou simplesmente adicione um cronjob para rhn_check, por exemplo, a cada minuto enquanto testar o sistema, o valor pode ser alterado como desejar.

 crontab -e * * * * * /usr/sbin/rhn_check 

Também não será errado adicionar / usr / bin / rhn-actions-control --enable-all ao Cron também, ele é usado para implantar configurações e às vezes fica estúpido.

Retornamos ao gerenciamento de chaves, copiamos o ID da chave que criamos e executamos:

 rhnreg_ks --serverUrl=http://your-server-ip/XMLRPC --activationkey=1-YOURKEY --force 

Só não se esqueça de alterar os valores de IP e chave para você. Novamente, recomendo que você use o sinalizador --force , pois notei problemas sem usá-lo.

Voltamos ao Systems - Todos , temos o prazer de observar nosso sistema. Agora você pode abri-lo e explorar o que e como, mas por enquanto eu recomendo criar um grupo para um gerenciamento de sistema mais conveniente.

Sistemas - Grupos de sistemas - Criar grupo , preencha o nome e a descrição, salve, abra o grupo recém-criado, vá para a seção Sistemas e adicione o sistema ao grupo.

Agora, inscreva o sistema no canal Systems - Seu sistema - pasta Software - subpasta Software Channels:



Escolha o seu canal e clique na confirmação. Por diversão, você pode tentar instalar o pacote, Software - Pacotes - Instalar .

Canal de configuração

Para gerenciar configurações entre o servidor cliente / máquina local e o controle remoto, vale a pena configurar o canal de configuração e vincular o sistema a ele.
Vamos para Configuração - Canais de configuração - Criar canal de configuração , defina o nome, descrição, salve e, em Configuração - Gerenciar canais de configuração - Inscreva-se em Canais e assine o canal de configuração no canal de software e no sistema.



Agora podemos implantar configurações do servidor e das máquinas locais e criar partições.

Configuração - Adicionar arquivos - Criar arquivo / Carregar arquivo:



Além disso, podemos enviar comandos remotos na forma de um script bash:



Lembro que todas as ações passam por uma Agenda, uma lista de todas as ações aplicadas a este sistema pode ser encontrada na seção Eventos:



Errata

Um dos recursos mais importantes do Spacewalk é o suporte a erratas, que se liga convenientemente aos canais e permite monitorar o nível de importância das atualizações mais recentes. Isso é configurado diretamente no servidor, além dos scripts, você precisa baixar os pacotes necessários para o Pearl:

 yum -y install perl-Frontier-RPC perl-Text-Unidecode wget https://raw.githubusercontent.com/stevemeier/cefs/master/errata-import.pl chmod +x errata-import.pl 

Em seguida, crie as principais erratas do script de atualização e coleção, que serão armazenadas em / etc / rhn /:

 #!/bin/bash cd /etc/rhn/ wget -N http://cefs.steve-meier.de/errata.latest.xml wget -N https://www.redhat.com/security/data/oval/com.redhat.rhsa-all.xml export SPACEWALK_USER='root' export SPACEWALK_PASS='verystrong' ./errata-import.pl --server YourServerIPAddress --errata errata.latest.xml --rhsa-oval com.redhat.rhsa-all.xml --publish unset SPACEWALK_USER unset SPACEWALK_PASS 

Na exportação, especifique o nome e a senha do administrador do Spacewalk, que você especificou no início.

Vamos tornar o script executável e adicioná-lo ao Cron:

 chmod +x spcwlk_errata.sh crontab -e 0 2 * * 7 /usr/bin/sh /etc/rhn/spcwlk_errata.sh 

Vamos executá-lo agora mesmo para ver alterações na interface gráfica. A execução levará algum tempo.



Sumário


Um ponto importante, na minha opinião, que eu pessoalmente senti falta, é configurar e instalar um proxy, além de elevar todo o sistema como HA. Tive uma ideia de configurar o aplicativo através do pacemaker e sincronizar no banco de dados. Como resultado, decidiu-se abandonar essa ideia, tendo em vista a frota de servidores não muito grande de estações clientes. No entanto, se o sistema for extremamente útil nos próximos seis meses, talvez você precise expandir o servidor original.

Automação


Servidor:

Script bash para implantação do servidor (DISABLES firewalld):

 #!/bin/sh # rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8/epel-7-x86_64/00736372-spacewalk-repo/spacewalk-repo-2.8-11.el7.centos.noarch.rpm rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm (cd /etc/yum.repos.d && curl -O https://copr.fedorainfracloud.org/coprs/g/spacewalkproject/java-packages/repo/epel-7/group_spacewalkproject-java-packages-epel-7.repo) yum -y install spacewalk-setup-postgresql spacewalk-postgresql wget perl-Frontier-RPC perl-Text-Unidecode perl-XML-Simple # mkdir /usr/share/spcwlk-tmp/ echo 'admin-email = root@localhost ssl-set-cnames = spcwlkserver ssl-set-org = Unicorn ssl-set-org-unit = EOH ssl-set-city = Prague ssl-set-state = SCK ssl-set-country = CZ ssl-password = verystrong ssl-set-email = root@localhost ssl-config-sslvhost = Y db-backend=postgresql db-name=spcwlkdb db-user=spcwlkuser db-password=verystrong db-host=localhost db-port=5432 enable-tftp=Y' > /usr/share/spcwlk-tmp/spcwlk_answer spacewalk-setup --answer-file=/usr/share/spcwlk-tmp/spcwlk_answer # systemctl stop firewalld systemctl disable firewalld # 


Script Bash para instalar erratas (primeiro defina o nome e a senha do administrador do Spacewalk):
 #!/bin/sh # wget https://raw.githubusercontent.com/stevemeier/cefs/master/errata-import.pl -P /etc/rhn/ echo '#!/bin/bash cd /etc/rhn/ wget -N http://cefs.steve-meier.de/errata.latest.xml wget -N https://www.redhat.com/security/data/oval/com.redhat.rhsa-all.xml export SPACEWALK_USER='gui username' export SPACEWALK_PASS='Password to your gui account' ./errata-import.pl --server YourServerIPAddress --errata errata.latest.xml --rhsa-oval com.redhat.rhsa-all.xml --publish unset SPACEWALK_USER unset SPACEWALK_PASS' > /etc/rhn/spcwlk_errata.sh # chmod +x /etc/rhn/errata-import.pl chmod +x /etc/rhn/spcwlk_errata.sh # echo '#!/bin/bash # /etc/rhn/./spcwlk_errata.sh' > /etc/rhn/spcwlk_errata_cron.sh chmod +x /etc/rhn/spcwlk_errata_cron.sh echo '0 2 * * 7 /usr/bin/sh /etc/rhn/spcwlk_errata_cron.sh' >> /var/spool/cron/root /etc/rhn/./spcwlk_errata.sh # 


Manual possível para implantação do servidor (não se esqueça de adicionar um arquivo de resposta):
 - hosts: spcwlk-server tasks: - name: Install Spacewalk repo yum: name: https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8/epel-7-x86_64/00736372-spacewalk-repo/spacewalk-repo-2.8-11.el7.centos.noarch.rpm state: present - name: Install epel repo yum: name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm state: present - name: Install PostgreSQL packages yum: name: - spacewalk-setup-postgresql - spacewalk-postgresql - wget - perl-Frontier-RPC - perl-Text-Unidecode - perl-XML-Simple - name: Creates directory for Spacewalk answer file file: path: /usr/share/spcwlk-tmp/ state: directory mode: 0755 - name: Deploy answer file copy: src: /etc/ansible/spcwlk_answer dest: /usr/share/spcwlk-tmp/spcwlk_answer - name: Spacewalk Server Deploy shell: spacewalk-setup --answer-file=/usr/share/spcwlk-tmp/spcwlk_answer - name: Stop firewalld systemd: name: firewalld state: stopped enabled: no 


Cliente:

Script Bash para implantação do cliente (não se esqueça do IP e da chave):
 #!/bin/sh # rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8-client/epel-7-x86_64/00742644-spacewalk-repo/spacewalk-client-repo-2.8-11.el7.centos.noarch.rpm yum -y install rhn-client-tools rhn-check rhn-setup rhnsd m2crypto yum-rhn-plugin rhncfg-actions deltarpm wget echo '#!/bin/bash # /usr/sbin/rhn_check' > rhn_check.sh mv rhn_check.sh /etc/cron.hourly/ chmod +x /etc/cron.hourly/rhn_check.sh echo '* * * * * /usr/bin/sh /etc/cron.hourly/rhn_check.sh' >> /var/spool/cron/root /usr/bin/rhn-actions-control --enable-all cd /usr/share/rhn/ wget http://YourServerIPAddress/pub/RHN-ORG-TRUSTED-SSL-CERT rhnreg_ks --serverUrl=http://172.22.64.41/XMLRPC --activationkey=1-xxxxxxxxxxxxxxxxxxxxxxxxxxxx --force 


Manual anisble para implantação do cliente:
 - hosts: spcwlk-clients tasks: - name: Install spacewalk repo yum: name: https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8-client/epel-7-x86_64/00742644-spacewalk-repo/spacewalk-client-repo-2.8-11.el7.centos.noarch.rpm state: present - name: Install client packages yum: name: - rhn-client-tools - rhn-check - rhn-setup - rhnsd - m2crypto - yum-rhn-plugin - rhncfg-actions - deltarpm - wget - name: Create cronjob for rhn_check cron: name: "rhn_check" minute: "*" hour: "*" day: "*" month: "*" weekday: "*" job: "/usr/sbin/rhn_check" - name: Enable controls for config and remote control deployment shell: /usr/bin/rhn-actions-control --enable-all - name: Get certificate from server to client get_url: url: http://YourServerIPAddress/pub/RHN-ORG-TRUSTED-SSL-CERT dest: /usr/share/rhn/ - name: Register client to server rhn_register: state: present server_url: http://YourServerIPAddress/XMLRPC activationkey: "{{ activation_key }}" 


Obrigado a todos por ler o artigo. Boa sorte

Source: https://habr.com/ru/post/pt435578/


All Articles