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 clienteConecte 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çãoPara 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:
ErrataUm 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 /:
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): Script Bash para instalar erratas (primeiro defina o nome e a senha do administrador do Spacewalk): 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): 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