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 😉