Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FreeBSD setup don't work #257

Open
ymasson opened this issue Sep 18, 2018 · 1 comment
Open

FreeBSD setup don't work #257

ymasson opened this issue Sep 18, 2018 · 1 comment
Labels
Milestone

Comments

@ymasson
Copy link
Contributor

ymasson commented Sep 18, 2018

I'm trying to run tests on FreeBSD 11 Openstack instance.

driver:
  name: openstack
[.......]
platforms:
  - name: freebsd11
    driver:
      image_ref: "FreeBSD 11"
root@3ea0ef1d6567:/tmp/role-to-test# kitchen verify default-freebsd11
-----> Starting Kitchen (v1.23.2)
-----> Creating <default-freebsd11>...
       OpenStack instance with ID of <1e02a2b2-8619-4def-8b86-bec047833217> is ready.
       Waiting for network information to be available...
       Waiting for server to be ready...
       Waiting for SSH service on X.X.X.X:22, retrying in 3 seconds
       Waiting for SSH service on X.X.X.X:22, retrying in 3 seconds
       Waiting for SSH service on X.X.X.X:22, retrying in 3 seconds
       [SSH] Established
       Adding OpenStack hint for ohai
       sudo: bash: command not found
>>>>>> ------Exception-------
>>>>>> Class: Kitchen::ActionFailed
>>>>>> Message: 1 actions failed.
>>>>>>     Failed to complete #create action: [SSH exited (1) for command: [sudo mkdir -p /etc/chef/ohai/hints && sudo bash -c 'echo {} > /etc/chef/ohai/hints/openstack.json']] on default-freebsd11
>>>>>> ----------------------
>>>>>> Please see .kitchen/logs/kitchen.log for more details
>>>>>> Also try running `kitchen diagnose --all` for configuration

Add packages :

driver:
  name: openstack
[.......]
platforms:
  - name: freebsd11
    driver:
      image_ref: "FreeBSD 11"
      user_data: /opt/kitchen/freebsd-setup.sh

freebsd-setup.sh script :

#!/bin/sh
pkg install -y bash sudo
root@3ea0ef1d6567:/tmp/role-to-test# kitchen verify default-freebsd11
-----> Starting Kitchen (v1.23.2)
-----> Creating <default-freebsd11>...
       OpenStack instance with ID of <c18a67dc-d54e-4d1d-b9da-a66d7a9cfa06> is ready.
       Waiting for network information to be available...
       Waiting for server to be ready...
       Waiting for SSH service on X.X.X.X:22, retrying in 3 seconds
       Waiting for SSH service on X.X.X.X:22, retrying in 3 seconds
       Waiting for SSH service on X.X.X.X:22, retrying in 3 seconds
       [SSH] Established
       Adding OpenStack hint for ohai
       Finished creating <default-freebsd11> (1m29.36s).
-----> Converging <default-freebsd11>...
       Preparing files for transfer
       Preparing salt-minion
       Preparing pillars into /srv/pillar
       Preparing state collection
       neither collection_name or formula have been set, assuming this is a pre-built collection
       Preparing state_top
       Preparing scripts into /etc/salt/scripts
       Unmatched '''.
       #: Command not found.
       Badly placed ()'s.
       Ambiguous output redirect.
       then: Command not found.
       return: Command not found.
       else: endif not found.
>>>>>> ------Exception-------
>>>>>> Class: Kitchen::ActionFailed
>>>>>> Message: 1 actions failed.
>>>>>>     Converge failed on instance <default-freebsd11>.  Please see .kitchen/logs/default-freebsd11.log for more details
>>>>>> ----------------------
>>>>>> Please see .kitchen/logs/kitchen.log for more details
>>>>>> Also try running `kitchen diagnose --all` for configuration

The kitchen logs contain this script https://github.com/saltstack/kitchen-salt/blob/master/lib/kitchen/provisioner/install.erb

E, [2018-09-18T12:41:59.513179 #870] ERROR -- default-freebsd11: /var/lib/gems/2.3.0/gems/test-kitchen-1.23.2/lib/kitchen/command.rb:169:in `block (2 levels) in run_action'
E, [2018-09-18T12:41:59.513196 #870] ERROR -- default-freebsd11: ----End Backtrace-----
E, [2018-09-18T12:41:59.513207 #870] ERROR -- default-freebsd11: ---Nested Exception---
E, [2018-09-18T12:41:59.513218 #870] ERROR -- default-freebsd11: Class: Kitchen::Transport::SshFailed
E, [2018-09-18T12:41:59.513228 #870] ERROR -- default-freebsd11: Message: SSH exited (1) for command: [sh -c '
# Check whether a command exists - returns 0 if it does, 1 if it does not
exists() {
  if command -v $1 >/dev/null 2>&1
  then
    return 0
  else
    return 1
  fi
}

[...........]

else
  echo "You asked for latest and you have got ${SALT_VERSION} installed, dunno how to fix that, sorry!"
  exit 2
fi

'

]
E, [2018-09-18T12:41:59.513471 #870] ERROR -- default-freebsd11: ----------------------
E, [2018-09-18T12:41:59.513500 #870] ERROR -- default-freebsd11: ------Backtrace-------
root@3ea0ef1d6567:/tmp/role-to-test# kitchen diagnose default-freebsd11
---
timestamp: 2018-09-18 12:44:45 UTC
kitchen_version: 1.23.2
instances:
  default-freebsd11:
    platform:
      os_type: unix
      shell_type: bourne
    state_file:
      hostname: X.X.X.X
      last_action: create
      last_error: Kitchen::ActionFailed
      server_id: d4c6a4e1-9d64-450d-ae19-a29e687aefde
    driver:
      allocate_floating_ip: false
      availability_zone: 
      block_device_mapping: 
      connect_timeout: 180
      flavor_ref: small
      floating_ip: 
      floating_ip_pool: 
      glance_cache_wait_timeout: 600
      image_ref: FreeBSD 11
      key_name: kitchen-test
      kitchen_root: "/tmp/role-to-test"
      log_level: :info
      metadata: 
      name: openstack
      network_id: 
      network_ref: 
      no_ssh_tcp_check: false
      no_ssh_tcp_check_sleep: 120
      openstack_api_key: XXXXXXX
      openstack_auth_url: https://XXXXXXX/
      openstack_domain_id: default
      openstack_network_name: 
      openstack_project_id: XXXXXXX
      openstack_project_name: 
      openstack_region: XXXXXXX
      openstack_service_name: 
      openstack_username: XXXXXXX
      port: '22'
      pre_create_command: 
      private_ip_order: 0
      public_ip_order: 0
      read_timeout: 180
      security_groups:
      - default
      server_name: 
      server_name_prefix: kitchen
      test_base_path: "/tmp/role-to-test/test/integration"
      use_ipv6: false
      user_data: "/opt/kitchen/freebsd-setup.sh"
      write_timeout: 180
    provisioner:
      bootstrap_url: https://raw.githubusercontent.com/saltstack/kitchen-salt/master/assets/install.sh
      cache_commands: []
      chef_bootstrap_url: https://www.chef.io/chef/install.sh
      command_prefix: 
      debug: 
      dependencies: []
      downloads: {}
      dry_run: false
      ftp_proxy: 
      http_proxy: 
      https_proxy: 
      init_environment: |
        # deal with Docker
        sudo mkdir /var/run/sshd || /bin/true
      install_after_init_environment: false
      is_file_root: true
      kitchen_root: "/tmp/role-to-test"
      local_salt_root: 
      max_retries: 1
      name: salt_solo
      omnibus_cachier: false
      pillars_from_directories: []
      pip_bin: pip
      pip_editable: false
      pip_extra_index_url: []
      pip_index_url: https://pypi.python.org/simple/
      pip_pkg: salt==%s
      remote_states: 
      require_chef: false
      require_chef_omnibus: false
      retry_on_exit_code: []
      root_path: "/tmp/kitchen"
      salt_apt_repo: https://repo.saltstack.com/apt/ubuntu/16.04/amd64/
      salt_apt_repo_key: https://repo.saltstack.com/apt/ubuntu/16.04/amd64/latest/SALTSTACK-GPG-KEY.pub
      salt_bootstrap_options: ''
      salt_bootstrap_url: https://bootstrap.saltstack.com
      salt_config: "/etc/salt"
      salt_copy_filter: []
      salt_env: base
      salt_file_root: "/srv/salt"
      salt_force_color: true
      salt_install: bootstrap
      salt_minion_config: "/etc/salt/minion"
      salt_minion_config_dropin_files: []
      salt_minion_config_template: 
      salt_minion_extra_config: {}
      salt_minion_id: 
      salt_pillar_root: "/srv/pillar"
      salt_ppa: ppa:saltstack/salt
      salt_spm_root: "/srv/spm"
      salt_state_top: "/srv/salt/top.sls"
      salt_version: latest
      salt_yum_repo: https://repo.saltstack.com/yum/redhat/$releasever/$basearch/archive/%s
      salt_yum_repo_key: https://repo.saltstack.com/yum/redhat/$releasever/$basearch/archive/%s/SALTSTACK-GPG-KEY.pub
      salt_yum_repo_latest: https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
      salt_yum_rpm_key: https://repo.saltstack.com/yum/redhat/7/x86_64/archive/%s/SALTSTACK-GPG-KEY.pub
      state_collection: false
      state_top:
        base:
          "*":
          - ssh
      state_top_from_file: false
      sudo: true
      sudo_command: sudo -E
      test_base_path: "/tmp/role-to-test/test/integration"
      vendor_path: 
      vendor_repo: {}
      wait_for_retry: 30
    transport:
      compression: false
      compression_level: 0
      connection_retries: 5
      connection_retry_sleep: 1
      connection_timeout: 15
      keepalive: true
      keepalive_interval: 60
      kitchen_root: "/tmp/role-to-test"
      log_level: :info
      max_ssh_sessions: 9
      max_wait_until_ready: 600
      name: ssh
      port: 22
      ssh_gateway: 
      ssh_gateway_port: 22
      ssh_gateway_username: 
      ssh_http_proxy: 
      ssh_http_proxy_password: 
      ssh_http_proxy_port: 
      ssh_http_proxy_user: 
      ssh_key: "/root/.ssh/id_rsa"
      test_base_path: "/tmp/role-to-test/test/integration"
      username: freebsd
    verifier:
      chef_omnibus_root: "/opt/chef"
      command: py.test -v --color=yes --host="ssh://${KITCHEN_USERNAME}@${KITCHEN_HOSTNAME}?ssh_identity_file=${KITCHEN_SSH_KEY}"
        --junit-xml "junit-${KITCHEN_INSTANCE}.xml" test/integration/${KITCHEN_SUITE}*
      command_prefix: 
      debug: 
      ftp_proxy: 
      http_proxy: 
      https_proxy: 
      kitchen_root: "/tmp/role-to-test"
      live_stream: !ruby/object:IO {}
      log_level: :info
      name: shell
      remote_exec: false
      root_path: "/tmp/verifier"
      shellout_opts: {}
      sleep: 0
      sudo: true
      sudo_command: sudo -E
      suite_name: default
      test_base_path: "/tmp/role-to-test/test/integration"

The default FreeBSD shell is csh.
If I add chsh -s /usr/local/bin/bash in freebsd-setup.sh , same error.

If I add install_after_init_environment parameter like this

driver:
  name: openstack
[.......]
platforms:
  - name: freebsd11
    driver:
      image_ref: "FreeBSD 11"
    provisioner:
      install_after_init_environment: True

It's stuck and need to be killed

       [SSH] Established
       Adding OpenStack hint for ohai
       Finished creating <default-freebsd11> (2m14.90s).
-----> Converging <default-freebsd11>...
       Preparing files for transfer
       Preparing salt-minion
       Preparing pillars into /srv/pillar
       Preparing state collection
       neither collection_name or formula have been set, assuming this is a pre-built collection
       Preparing state_top
       Preparing scripts into /etc/salt/scripts
       #: Command not found.
       Transferring files to <default-freebsd11>
^Croot@3ea0ef1d6567:/tmp/role-to-test#

chsh -s /usr/local/bin/bash and install_after_init_environment together, also stuck

My kitchen Gemfile used with Debian 9 Docker image (like https://gitlab.com/ymasson-salt/ci-kitchen/blob/devel/Dockerfile) :

source "http://rubygems.org"

gem 'test-kitchen'
gem 'kitchen-docker'
gem 'kitchen-salt'
gem "kitchen-openstack"

### ohai <14.0.28 for Ruby <=2.3
gem 'ohai', '<14.0.28'

Thanks for your help
Yann

@gtmanfred gtmanfred added the bug label Mar 1, 2019
@gtmanfred gtmanfred added this to the Approved milestone Mar 1, 2019
@gtmanfred
Copy link
Contributor

I have no idea why this would be broken in FreeBSD, and I do not have the bandwidth to figure it out and fix it, so a PR fixing this for freebsd would be greatly appreciated.

Thanks,
Daniel

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants