We would like to automate installation of gitlab runner using chef. we are successful with it. Now, the Issue is regarding registering gitlab runner with chef resource. we have gone through chef resource. and official cookbook https://gitlab.com/chef-platform/gitlab-ci-runner but looks a bit complicated for us. we wonder if we have any pre-built chef resources to register gitlab runner. if yes, can we know how we can register with a example resource. Additionally, I have tried looking at resource https://github.com/TYPO3-cookbooks/site-gitlabcirunnertypo3org/blob/master/recipes/default.rb

name = "#{node['fqdn']}-docker"
  gitlab_ci_runner name do
      options(
        registration_token: registration_token,
        url: node['site-gitlabcirunnertypo3org']['gitlab_url'],
        executor: 'docker',
        :'docker-image' => 'docker:1',
        :'tag-list' => ['docker']
      )
end

But I dont understand how it is registering the runner. Thanks for help!

up vote 1 down vote accepted

Your second link just use the official cookbook, this official cookbook still use the LWRP syntax so you need to check in the provider directory for the resource action code which for register is basically just two execute commands (extract from the file linked above):

converge_by("Register runner #{new_resource.description}") do
  execute "#{env} gitlab-runner register --non-interactive #{options}"
  # giving time to gitlab-ci to manage the request
  execute "sleep #{new_resource.sleep}"
end

So mostly your exemple ends up calling the gitlab-runner register command with the options defined in the options hash (with a little transformation of the hash into command parameters)

There's no 'core' chef resource to register gitlab runners out of using an execute resource to run the command.

A basic exemple of this resource is present in the cookbook Readme:

gitlab_ci_runner 'my runner' do
  options({
    registration_token: '1234567890',
    url: 'http://gitlab-ci.myinstance'
  })
end
  • Thanks @Tensibai. I will give a try! – DevOps Sep 14 at 13:26
  • In my cookbook I have added providers/default.rb completely and gitlab_ci_runner resource from official cookbook. But still it can able to find the resource for gitlab_ci_runner. ` NoMethodError ------------- undefined method gitlab_ci_runner' for cookbook: gitlab_runner, recipe: install_runner :Chef::Recipe is there anything do we need to add Thanks! – DevOps Sep 15 at 0:31
  • That's not the way to use another cookbook, you need to get this cookbook, I recommend you to follow the tutorials at learn.chef.io as it's too long to fit in a comment – Tensibai Sep 15 at 6:57
  • I tried by adding providers from official cookbook but there is some issue with it.(May be some thing from my side). I have included recipe[gitlab-ci-runner::register] and added register recipe to my recipe and worked well. Thanks@ Tensibai – DevOps 17 hours ago

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.