Vagrant + Chef solo quick start

O que o chef vai fazer

  • criar usuário
  • adicionar usuário ao grupo sudo
  • instalar Nginx
  • adicionar arquivo host para Nginx

Antes de começar, você deve instalar o ruby ​​and gem bundler.
Como instalar o Ruby no seu sistema operacional, você pode encontrar no google.

Instale o bundler

gem install bundler

Criar diretório para o projeto do chef

mkdir chef-solo-quick-start
cd chef
-solo-quick-start

Crie ‘Gemfile’ para empacotador

echo 'source "https://rubygems.org"' >> Gemfile
echo
'' >> Gemfile
echo
'gem "knife-solo"' >> Gemfile
echo
'gem "knife-solo_data_bag"' >> Gemfile
echo
'gem "librarian-chef"' >> Gemfile

Instalando gemas usando bundler

bundle install

Inicializar o projeto do chef

knife solo init .

Adicionando livros de receitas ao Cheffile

echo "cookbook 'chef-solo-search'" >> Cheffile
echo
"cookbook 'sudo'" >> Cheffile
echo
"cookbook 'users'" >> Cheffile
echo
"cookbook 'nginx'" >> Cheffile

Instalando livros de receitas

librarian-chef install

você pode pular a próxima etapa

export EDITOR=vim 

Crie uma bolsa de dados para o implantador de usuário

knife solo data bag create users deployer

inserir no arquivo

{
"id": "deployer",
"password" : "here encrypted password",
"ssh_keys" : [
"here ssh key"
],
"groups" : ["sudo" ,"sysadmin"],
"shell" : "/bin/bash"
}

Gerar senha criptografada

openssl passwd -1 "passwor_here"

Criar arquivo de nó

touch nodes/vagrant.json

com o próximo conteúdo

{
"authorization": {
"sudo": {
"groups": ["vagrant", "deployer", "wheel", "sysadmin"],
"users": ["vagrant", "deployer"],
"passwordless": "false"
}
},
"users": ["deployer"],
"nginx": {
"version": "1.7.6",
"default_site_enabled": false,
"source": { "modules": [ "nginx::http_gzip_static_module" ] }
},
"run_list": [
"recipe[chef-solo-search]",
"recipe[sudo]",
"recipe[users::sysadmins]",
"recipe[nginx::source]"
]
}

Criar arquivo Vagrant

touch Vagrantfile

com o próximo conteúdo

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

config
.vm.box = "precise64"
config
.omnibus.chef_version = :latest

config
.vm.network "forwarded_port", guest: 80, host: 8080

VAGRANT_JSON
= JSON.parse(Pathname(__FILE__).dirname.join('nodes', 'vagrant.json').read)

config
.vm.provision :chef_solo do |chef|
chef
.cookbooks_path = ["site-cookbooks", "cookbooks"]
chef
.roles_path = "roles"
chef
.data_bags_path = "data_bags"
chef
.provisioning_path = "/tmp/vagrant-chef"

chef
.run_list = VAGRANT_JSON.delete('run_list')
chef
.json = VAGRANT_JSON
end
end

Então tem que instalar o vagrant com o plugin “omnibus” como instalar veja no google.

Configurar servidor virtual

vagrant up

Crie um livro de receitas simples que copie o arquivo host para o servidor

mkdir -p site-cookbooks/qs-nginx/files/default/
mkdir
-p site-cookbooks/qs-nginx/recipes/

Criar arquivo

touch site-cookbooks/qs-nginx/files/default/quick-start

Com o próximo contexto

server {
listen
80;

server_name
127.0.0.1;
root
/home/deployer/sites/quick-start;
}

Criar arquivo

touch site-cookbooks/qs-nginx/recipes/default.rb

Com o próximo contexto

cookbook_file "/etc/nginx/sites-enabled/quick-start" do
owner
"root"
group "root"
mode
"0655"
notifies
:restart, resources(:service => "nginx"), :delayed
end

Adicionar receita a run_list nodes / vagrant.json

"recipe[qs-nginx]"

Aplicar nova configuração

vagrant provision

Se você abrir http: // localhost: 8080 /, deverá ver o erro 404 😉

Para obter mais informações, consulte a documentação oficial 😉

Repo do GitHub com este projeto