Ansibleの最悪の慣行。ジョージー・シュクリン







皆さんこんにちは!私の名前はジョージです。私はservers.comで働いています。私はAnsibleについてあなたに話すようになりました:良いAnsibleと悪いAnsible一般について、つまり人々がAnsibleで悪いことをする方法について。









まず、質問したいのですが。これが何であるか誰が知っていますか?













聴衆は答えます:「これは痛みについてです」







私は3つの手を見ました。部屋にAnsibleで働いている人が3人いるとは思わない。どうやら最もまともな絵ではありません。













. . .







R&D , .







, , : , - - , , . , : « , ». : « , ».







. - , . , , . Ansible.













Ansible? , R&D , production . CI/CD , , , . Ansible .







Ansible. Chef. CFengine.







: « Ansible?» , .













, .







, 20 , -, . , . . ?







Ansible playbook, , . Chef - , . . , chef-. , Ansible .







, , .













, , - Ansible . , Ansible , - .







Chef , , Ansible.







, . , , Ansible , , .













, , Ansible . . , , , .







, , , . , . , , . , , , .







, Chef . - , .







Ansible . , Ansible .







, . , , , , . . , . . , , - , . Ansible .









Ansible – . , Ansible API, Ansible , , - , . Ansible , .













Ansible, . , , , .













Computer Science – .







. , , .







  • .
  • .
  • .
  • , .








Ansible. output Ansible. Ansible . – Jinja Vars, .







, side effects . , , , Ansible.







Ansible . , :













, , side effects. , , Ansible, side effect.













Ansible – Jinja, . X x. ? , , .







. .







, - , : , , . . , , .







, , , , .













, Ansible .







Ansible – , , . , - .







, Ansible.













Ansible , . . . , , , .













Ansible, - , . Ansible.







. .







, , . , , , .







Ansible "", , , - includes. , .













, Ansible. . .













:







  • .
  • .
  • .
  • , .








.













, , Ansible. , , . : « ? ». .







, Ansible, . .













. , play. . , /etc/foo .







. .













Ansible , .







, , , , - , .







. - .













– . Ansible , playbook . , .







, , , .













, .







.







, , , , , - . .







, .







, .













– . , .







, , inventory, , .







. , – playbook, .







, , .













Ansible , , .







, Ansible. . , . , . . , , . . , , , , . .







, .







– . , .













, . Kubernetes. YAML JSON.







Jinja YAML , YAML Jinja. , JSON YAML to_nice_yaml.







, , , Jinja YAML-.







. , Ansible .













. , , . .













coupling . . . , .







Ansible coupling. , .







– .













.







, . , , . YAML-, .







1 2 , 2 , . 2, , . , , , , 2.













, 80 % Ansible, . . , , .







, . , , , - , - , - .







, , - , .







. . , , Ansible . . Playbook host. : host:



, . . inventory playbook . , .







, , playbook template, .













. . – inventory.







inventory, , . hostvars , - . , - .







? . , play.













, , Ansible. Ansible . .







, (shadowing) .







vars .







set_facts, default. Ansible , .







– , .













Ansible , . 5 , 3 playbooks, 1 inventory.







, .







, , , .







, inventory . , , . 0 changing. - , - .













Ansible, Ansible , . , Ansible, . . , .







, Ansible.













. 200 - , includes. includes, .







, , . . . 2, : « 3», 2. , 3. , Ansible : « », : « ».







includes, import , , . , -.













. , , -. , .







Ansible , , , .







, , , includes , , Ansible .













, .







Ansible – 2 playbooks 2 Ansible. - . , .







, Ansible C



. undefine behavior, .













, , Ansible.







, .







– - Ansible. , , . - , - Ansible. : «, ». , -.







, : - Ansible; .







, , , - - , . , , Ansible. , Ansible python’ . , python’ Ansible. . Ansible – , .







, - Ansible, .







– , , . , . Ansible.







, Ansible, . . Python , , Go, Ryby, .







stderr , stdout JSON – . Ansible , , .







, , , Ansible playbook.







: , , - ; lookup- , -. Ansible -.













, , , - , -? – .







:







  • Ansible, , .
  • Ansible .


, , .







- Ansible , , , - .







Ansible http, , , .







, , Ansible , , , .













! . . Gartner , . Ansible , , Chef Puppet . .







. , .







CFEngine , , Ansible , . .







«» , Ansible : « ?». , , . , , , , , .







, - , - . , Ansible, . , , . , handlers, , , .







0 changes, , , , , - . . Ansible. , handler notify handler. handler when, event-, .







. Handlers - . , , , , , . Ansible .







. ? – , , …







. , . , , , . Debops , - , - , . - -. -, .







, Galaxy. , , . , 2 . 15-20 2 . – Knife. , Chef – cookbooks. Knife, , , .







, , . . . .







! . Tower AWX ? - ? - ?







. , Chef - ?







. Chef. , , Chef infrastructure as code. , infrastructure, . . - - , . , D+. , , kill -9 , .







. . , , . .







, , , . defense- , . .







, . , . .







, . , , 50 , , , , 50 , , , "". 50 , , 500 , , , 1 000 . , , , .







Tower – , . Ansible job’ Jenkins, Gitlab-CI . .







, .gitlab-ci.yml Tower.







- Ansible Red Hat. – , , .







-, , Ansible , . , -, , , .







, RBAC - playbook – production. Netflix, ssh- production-, production . , .







?







4 . 4 . , , tmp. , . . . , . - .







, , , , linter , . jobs ci .







Ansible, , Ansible Jinja. : Ansible – Python, Jinja – YAML. , . ( Ansible ) .







, Jinja. Ansible Jinja: if - true else false. Jinja. . YAML JSON. , - , YAML, , , , . : Javascript, PHP.







, Ansible , - , , ?







-, Ansible-lint – , . , , Ansible. Ansible-lint , . Ansible , , .







, , , . Ansible . . overleaf. presage, , . ., set_facts , default. , . : « ?». , Ansible , . , .







, include c set_fact, , , , . , , . Ansible , . , 2.6, 2.7, 2.8 2.9 includes, -. , .







, , , -, include- delegate. , - delegate, - . . , , . , , . , , , . 2.6, -. 2.7, 2.8, 2.9.







, . playbook. Import role vars x=1. : set_facts x=2, debug var=x. : debug var=x. . . , , , , .







, , 2, 2. , , . , , . , 1, : set_fact x=2. ? 1. , , set_fact 2. , 1, , 2. . . .







-, include- . .







. Terraform? ?







Terraform . – , , Terraform .







, Terraform state. Terraform states. n+1 provisioning. open source Terraform : «, . Git, locks, – ». .







, , , . docker. open source , .







テラフォームがアンシブルで行うことはできないため、アンシブルとテラフォームはどこでも競合他社ではありません。その逆も同様です。通常、Terraformを使用してサーバーを内部で構成することはできません。







Terraformは、実際にはサービスを注文するための宣言的な方法です。彼らはそれをプロビジョニングと呼んでいますが、実際には、これらのサービスを自分自身に提供するか、サードパーティプロバイダーによって提供されます。Terraformは、豊富なマシンインターフェイスを介してサードパーティプロバイダーにサービスを注文するための標準化された方法です。それらは互いに非常に接近していますが、大まかに言えば、Ansibleが登場する前にTerraformは機能します。








All Articles