Как проверить, что httpd включен и работает с помощью InSpec с Kitchen-docker в CentOS?

Выполняя свой тест с InSpec, я не могу проверить, включен ли и работает ли httpd.

Тест InSpec

describe package 'httpd' do
  it { should be_installed }
end

describe service 'httpd' do
  it { should be_enabled }
  it { should be_running }
end

describe port 80 do
  it { should be_listening }
end

Выход для kitchen verify:

  System Package
     ✔  httpd should be installed
  Service httpd
     ✖  should be enabled
     expected that `Service httpd` is enabled
     ✖  should be running
     expected that `Service httpd` is running
  Port 80
     ✖  should be listening
     expected `Port 80.listening?` to return true, got false

Test Summary: 1 successful, 3 failures, 0 skipped

Рецепт установки httpd:

if node['platform'] == 'centos'
  # do centos installation
  package 'httpd' do
    action :install
  end

  execute "chkconfig httpd on" do
    command "chkconfig httpd on"
  end

  execute 'apache start' do
    command '/usr/sbin/httpd -DFOREGROUND &'
    action :run
  end

Я не знаю, что я делаю неправильно.

Больше информации

Версия CentOS на экземпляре докера

kitchen exec --command 'cat /etc/centos-release'
-----> Execute command on default-centos-72.
       CentOS Linux release 7.2.1511 (Core)

Версия Chef установлена ​​на моем хосте

Chef Development Kit Version: 1.0.3
chef-client version: 12.16.42
delivery version: master (83358fb62c0f711c70ad5a81030a6cae4017f103)
berks version: 5.2.0
kitchen version: 1.13.2

ОБНОВЛЕНИЕ 1: Кухонный yml с атрибутами драйвера

Платформа имеет конфигурацию, рекомендованную coderanger:

---
driver:
  name: docker
  use_sudo: false

provisioner:
  name: chef_zero

verifier: inspec

platforms:
  - name: centos-7.2
    driver:
      platform: rhel
      run_command: /usr/lib/systemd/systemd
      provision_command:
        - /bin/yum install -y iniscripts net-tools wget
suites:
  - name: default
    run_list:
      - recipe[apache::default]
    verifier:
      inspec_tests:
        - test/integration
    attributes:

И это вывод при запуске kitchen test:

... some docker steps...

Step 16 : RUN echo ssh-rsa\ AAAAB3NzaC1yc2EAAAADAQABAAABAQDIp1HE9Zbtl3zAH2KKL1mVzb7BU1WxK7mi5xpIxNRBar7EZAAzxi1pVb1JwUXFSCVoAmUyfn/lBsKlgXnUD49pKrqkeLQQW7NoG3uCFiXBUTof8nFVuLYtw4CTiAudplyMvu5J7HQIP1Hve1caY27tFs/kpkQaXHCEuIkqgrM2rreMKK0n8im9b36L2SwWyM/GwqcIS1z9mMttid7ux0\+HOWWHqZ\+7gumOauh6tLRbtjrm3YYoaIAMyv945MIX8BFPXSQixThBVOlXGA9iTwUZWjU6WvZThxVFkKPR9KZtUTuTCT7Y8\+wFtQ/9XCHpPR00YDQvS0Vgdb/LhZUDoNqV\ kitchen_docker_key >> /home/kitchen/.ssh/authorized_keys
        ---> Using cache
        ---> c0e6b9e98d6a
       Successfully built c0e6b9e98d6a
       d486d7ebfe000a3138db06b1424c943a0a1ee7b2a00e8a396cb8c09f9527fb4b
       0.0.0.0:32841
       Waiting for SSH service on localhost:32841, retrying in 3 seconds
       Waiting for SSH service on localhost:32841, retrying in 3 seconds
       Waiting for SSH service on localhost:32841, retrying in 3 seconds
       Waiting for SSH service on localhost:32841, retrying in 3 seconds
       .....

person Robert    schedule 01.12.2016    source источник
comment
Какие журналы шеф-повара на кухне сходятся? Кажется, пакет установлен, но apache не запущен, поэтому мне интересно, действительно ли шеф-повар запустился. (И почему бы не использовать ресурс службы вместо ресурсов выполнения?) (И почему вообще не использовать кулинарную книгу сообщества apache2?)   -  person Tensibai    schedule 01.12.2016
comment
Я использовал CentOS 6.4, и все было в порядке, но в CentOS 7.2 больше нет служб. Поэтому я пытаюсь протестировать эту версию.   -  person Robert    schedule 01.12.2016
comment
Coderanger ответил вам, я пропустил, что вы использовали кухонный докер. (Кстати, я говорил о сервисном ресурсе шеф-повара, а не о системной сервисной команде)   -  person Tensibai    schedule 01.12.2016


Ответы (1)


Вы не можете, по крайней мере, не из коробки. Это одна из областей, где kitchen-docker показывает свои края. Мы пытаемся притвориться, что контейнер похож на крошечную виртуальную машину, но на самом деле это не так, и одно примечательное место, где притворство не работает, — это системы инициализации. В CentOS 7 используется systemd. Внутри контейнера можно запустить systemd (см. https://github.com/poise/yolover-example/blob/master/.kitchen.yml#L17-L33), но не все функции поддерживаются, и в целом это может быть немного странно :-/ Однако этого примера должно быть достаточно, чтобы ваши тесты работали. Для полноты, CentOS 6 использует Upstart, который просто не будет работать внутри Docker, так что здесь тоже нет любви.

person coderanger    schedule 01.12.2016
comment
Я также должен добавить, что systemd работает из коробки с kitchen-dokken. - person coderanger; 01.12.2016
comment
Я обновил свой вопрос с вашей рекомендацией для платформы, но он не работает - person Robert; 02.12.2016
comment
Вы не установили контейнер в привилегированный режим. - person coderanger; 02.12.2016