Acesso à Internet com proxy

Se estiver implantando em um ambiente que requer acesso à Internet por meio de um proxy, você desejará configurar os serviços para que eles possam acessar os recursos conforme pretendido.

A melhor maneira de fazer isso é definir um único arquivo com variáveis de ambiente necessárias em sua configuração do Butane e fazer referência a isso por meio de arquivos de unidade drop-in do systemd para todos esses serviços.

Definindo variáveis de ambiente de proxy comuns

This common file has to be subsequently referenced explicitly by each service that requires internet access.

variant: fcos
version: 1.5.0
storage:
  files:
    - path: /etc/example-proxy.env
      mode: 0644
      contents:
        inline: |
          https_proxy="http://example.com:8080"
          all_proxy="http://example.com:8080"
          http_proxy="http://example.com:8080"
          HTTP_PROXY="http://example.com:8080"
          HTTPS_PROXY="http://example.com:8080"
          no_proxy="*.example.com,127.0.0.1,0.0.0.0,localhost"

Definindo unidades drop-in para serviços principais

Zincati pesquisa atualizações do sistema operacional e rpm-ostree é usado para aplicar atualizações do sistema operacional e de pacotes em camadas, exigindo, portanto acesso à internet. O serviço opcional anonimizado countme também requer acesso, se habilitado.

Você pode usar referências de arquivos locais para unidades do systemd em vez de fazer "inlining". Consulte Usando o parâmetro --files-dir do Butane para incorporar arquivos para obter mais informações.
variant: fcos
version: 1.5.0
systemd:
  units:
    - name: rpm-ostreed.service
      dropins:
        - name: 99-proxy.conf
          contents: |
            [Service]
            EnvironmentFile=/etc/example-proxy.env
    - name: zincati.service
      dropins:
        - name: 99-proxy.conf
          contents: |
            [Service]
            EnvironmentFile=/etc/example-proxy.env
    - name: rpm-ostree-countme.service
      dropins:
        - name: 99-proxy.conf
          contents: |
            [Service]
            EnvironmentFile=/etc/example-proxy.env

Definindo unidades drop-in para daemons de contêiner

Se estiver usando o docker, o drop-in docker.service é suficiente. Se estiver executando o Kubernetes com containerd (e sem docker), o drop-in containerd.service pode ser necessário.

variant: fcos
version: 1.5.0
systemd:
  units:
    - name: docker.service
      enabled: true
      dropins:
        - name: 99-proxy.conf
          contents: |
            [Service]
            EnvironmentFile=/etc/example-proxy.env
    - name: containerd.service
      enabled: true
      dropins:
        - name: 99-proxy.conf
          contents: |
            [Service]
            EnvironmentFile=/etc/example-proxy.env

Definindo o uso de proxy para unidades systemd do podman

O podman não possui daemon e, portanto, a configuração é para cada serviço individual agendado e pode ser feita como parte da definição completa da unidade do systemd.

variant: fcos
version: 1.5.0
systemd:
  units:
    - name: example-svc.service
      enabled: true
      contents: |
        [Unit]
        After=network-online.target
        Wants=network-online.target

        [Service]
        EnvironmentFile=/etc/example-proxy.env
        ExecStartPre=-/bin/podman kill example-svc
        ExecStartPre=-/bin/podman rm example-svc
        ExecStartPre=-/bin/podman pull example-image:latest
        ExecStart=/bin/podman run --name example-svc example-image:latest
        ExecStop=/bin/podman stop example-svc

        [Install]
        WantedBy=multi-user.target