Chef CentOS v11: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
| Строка 410: | Строка 410: | ||
Converging 0 resources |
Converging 0 resources |
||
Chef Client finished, 0 resources updated |
Chef Client finished, 0 resources updated |
||
| + | </PRE> |
||
| + | |||
| + | |||
| + | После добавления нашего рецепта к роли: |
||
| + | |||
| + | <PRE> |
||
| + | chef-client |
||
| + | Starting Chef Client, version 11.4.0 |
||
| + | resolving cookbooks for run list: ["demo"] |
||
| + | Synchronizing Cookbooks: |
||
| + | - demo |
||
| + | Compiling Cookbooks... |
||
| + | Converging 3 resources |
||
| + | Recipe: demo::default |
||
| + | * package[ntp] action install |
||
| + | - install version 4.2.4p8-2.el6.centos of package ntp |
||
| + | |||
| + | * package[mc] action install (up to date) |
||
| + | * service[ntpd] action enable |
||
| + | - enable service service[ntpd] |
||
| + | |||
| + | * service[ntpd] action start |
||
| + | - start service service[ntpd] |
||
| + | |||
| + | Chef Client finished, 3 resources updated |
||
</PRE> |
</PRE> |
||
Версия 17:59, 18 февраля 2013
Chef сервер под CentOS 6.3
Все очень призрачно...
За пару месяцев что я работаю с шефом произошли заметные изменения в процедуре установки. Точнее, новая процедура отличается от старой практически на 100%.
Я делаю установку внутри линукс-контейнера, потому я допускаю что есть отличия от установки на "нормальную" систему.
Скачать
Я брал здесь:
https://opscode-omnitruck-release.s3.amazonaws.com/el/6/x86_64/chef-server-11.0.4-1.el6.x86_64.rpm
Но вообще-то узнать последнюю версию можно тут: http://www.opscode.com/chef/install/
Мне не очень нравится идея комбайна - эта РПМка тянет внутри себя кучу всего, включая Postgress, RabbitMQ и т.д.
Управляется все через новый механизм initctl
Немного забегая вперед, вот мой вывод:
Конфигурация
Запускаю:
После завершения длительного процесса у меня запущен весь комплекс сервисов:
Базовое тестирование
Достаточно длительный процесс (по крайне мере на ограниченных ресурсах контейнера)
У меня возникли некоторые проблемы (пока я не выявил сказалось ли это на работоспособности сервера)
Search API endpoint
/search/environment
GET
when searching for a single environment by name
should have more than just the target of our environment search on the system
should return status code 200 and a single environment
POST
targeted toward many environments with body of {"possibly_nested"=>["default_attributes", "top", "middle", "bottom"], "the_name"=>["name"], "not_found"=>["foo", "bar", "baz", "totally_not_a_real_field"], "empty"=>[]}
should succeed, and return multiple environments (FAILED - 1)
/search/node
GET
when searching for a single node by name
should have more than just the target of our node search on the system
should return status code 200 and a single node
POST
Failures:
1) Search API endpoint /search/environment POST targeted toward many environments with body of {"possibly_nested"=>["default_attributes", "top", "middle", "bottom"], "the_name"=>["name"], "not_found"=>["foo", "bar", "baz", "totally_not_a_real_field"], "empty"=>[]} should succeed, and return multiple environments
Failure/Error: r.should look_like search_success_response
'total' should match '6', but we got '7' instead.
# ./lib/pedant/rspec/search_util.rb:99:in `block (2 levels) in performing_a_search'
# ./lib/pedant/rspec/search_util.rb:670:in `with_search_polling'
# ./lib/pedant/rspec/search_util.rb:86:in `block in performing_a_search'
Finished in 5 minutes 43.13 seconds
70 examples, 1 failure
Failed examples:
rspec ./lib/pedant/rspec/search_util.rb:85 # Search API endpoint /search/environment POST targeted toward many environments with body of {"possibly_nested"=>["default_attributes", "top", "middle", "bottom"], "the_name"=>["name"], "not_found"=>["foo", "bar", "baz", "totally_not_a_real_field"], "empty"=>[]} should succeed, and return multiple environments
Если я понимаю правильно - ответ содержит 7 результатов вместо ожидаемых 6 но в json ниже я не могу найти ни 6 ни 7 атрибутов. Тут есть неясность.
{
"possibly_nested"=>
[
"default_attributes",
"top",
"middle",
"bottom"
],
"the_name"=>
[
"name"
],
"not_found"=>
[
"foo",
"bar",
"baz",
"totally_not_a_real_field"
],
"empty"=>
[
]
}
настройка knife
Для работы с 10-м шефом использовался "нож", в 11 он тоже присутствует
Подкладываю в ~/.chef файлы ключей:
Запускаем knife configure -i
Обратить внимание - у меня при указании localhost вместо https://172.31.0.2:443 не работал бутстрап
Нод пока нет, но все равно проверяю ...
Конфиг .chef/knife.rb выглядит где-то так:
log_level :info log_location STDOUT node_name 'root' client_key '/root/.chef/root.pem' validation_client_name 'chef-validator' validation_key '/root/.chef/chef-validator.pem' chef_server_url 'https://localhost:443' syntax_check_cache_path '/root/.chef/syntax_check_cache'
chef-server-ctl
Управлять сервером теперь тоже по новому. Вобщем, хелп понятный - особо расписывать нечего. chef-server]# chef-server-ctl status
run: bookshelf: (pid 1226) 9024s; run: log: (pid 1225) 9024s run: chef-expander: (pid 1162) 9030s; run: log: (pid 1161) 9030s run: chef-server-webui: (pid 1391) 9002s; run: log: (pid 1390) 9002s run: chef-solr: (pid 1136) 9031s; run: log: (pid 1135) 9031s run: erchef: (pid 1578) 8984s; run: log: (pid 1271) 9018s run: nginx: (pid 1558) 8986s; run: log: (pid 1557) 8986s run: postgresql: (pid 1036) 9042s; run: log: (pid 1035) 9042s run: rabbitmq: (pid 702) 9059s; run: log: (pid 701) 9059s
Настройка клиентов
Самый простой способ - это сделать chef bootstrap Звучит смешно но это так )
#knife bootstrap 172.31.0.5 --node-name 172.31.0.5 Bootstrapping Chef on 172.31.0.5 Failed to authenticate root - trying password auth
После чего на клиенте можно запускать
# chef-client Starting Chef Client, version 11.4.0 resolving cookbooks for run list: [] Synchronizing Cookbooks: Compiling Cookbooks... [2013-02-18T08:03:14-05:00] WARN: Node 172.31.0.5 has an empty run list. Converging 0 resources Chef Client finished, 0 resources updated
Важно
Везде используются FQDN потому без записей в в DNS или /etc/hosts не обойтись.
Например когда у меня hostname сервера резолвился в 127.0.0.1 то именно этот адрес передавался в запросах и клиенты пробовали получить с него данные. Ничего, конечно же, не работало. Лечить так:<BR> Было: <PRE> 127.0.0.1 localhost centos-chefserver 172.31.0.2 centos-chefserver
Нужно:
127.0.0.1 localhost 172.31.0.2 centos-chefserver
И потом
chef-server-ctl reconfigure
Поваренные книги и рецепты, роли и вообще конфигурация сервера
cookbook
Создать поваренную книгу:
#knife cookbook create demo ** Creating cookbook demo ** Creating README for cookbook: demo ** Creating CHANGELOG for cookbook: demo ** Creating metadata for cookbook: demo
ls -lsa /var/chef/cookbooks/demo/ total 52 4 drwxr-xr-x 10 root root 4096 Фев 18 07:58 . 4 drwxr-xr-x 4 root root 4096 Фев 18 08:05 .. 4 drwxr-xr-x 2 root root 4096 Фев 18 07:58 attributes 4 -rw-r--r-- 1 root root 406 Фев 18 07:58 CHANGELOG.md 4 drwxr-xr-x 2 root root 4096 Фев 18 07:58 definitions 4 drwxr-xr-x 3 root root 4096 Фев 18 07:58 files 4 drwxr-xr-x 2 root root 4096 Фев 18 07:58 libraries 4 -rw-r--r-- 1 root root 272 Фев 18 07:58 metadata.rb 4 drwxr-xr-x 2 root root 4096 Фев 18 07:58 providers 4 -rw-r--r-- 1 root root 1431 Фев 18 07:58 README.md 4 drwxr-xr-x 2 root root 4096 Фев 18 08:04 recipes 4 drwxr-xr-x 2 root root 4096 Фев 18 07:58 resources 4 drwxr-xr-x 3 root root 4096 Фев 18 07:58 templates
cat /var/chef/cookbooks/demo/recipes/default.rb
package "ntp" do
action :install
provider Chef::Provider::Package::Yum
end
package "mc" do
action :install
provider Chef::Provider::Package::Yum
end
service "ntpd" do
supports :status => true, :restart => true, :reload => true
action [ :enable, :start ]
end
# knife cookbook upload demo Uploading demo [0.1.0] Uploaded 1 cookbook.
role
EDITOR=mcedit knife role create demo_role
{
"name": "demo_role",
"description": "",
"json_class": "Chef::Role",
"default_attributes": {
},
"override_attributes": {
},
"chef_type": "role",
"run_list": [
],
"env_run_lists": {
}
}
Добавить наш кукбук:
{
"name": "demo_role",
"description": "",
"json_class": "Chef::Role",
"default_attributes": {
},
"override_attributes": {
},
"chef_type": "role",
"run_list": [
"recipe[demo]"
],
"env_run_lists": {
}
}
run_list
knife node run_list 172.31.0.5 add role[demo_role] 172.31.0.5: run_list: role[demo_role]
Теперь пустой список это не ошибка =)
chef-client Starting Chef Client, version 11.4.0 resolving cookbooks for run list: [] Synchronizing Cookbooks: Compiling Cookbooks... Converging 0 resources Chef Client finished, 0 resources updated
После добавления нашего рецепта к роли:
chef-client
Starting Chef Client, version 11.4.0
resolving cookbooks for run list: ["demo"]
Synchronizing Cookbooks:
- demo
Compiling Cookbooks...
Converging 3 resources
Recipe: demo::default
* package[ntp] action install
- install version 4.2.4p8-2.el6.centos of package ntp
* package[mc] action install (up to date)
* service[ntpd] action enable
- enable service service[ntpd]
* service[ntpd] action start
- start service service[ntpd]
Chef Client finished, 3 resources updated