Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Hoc est transcript spectaculis on DevOps-40 2020-03-18:

Incipiens a secundo committere, quodlibet signum legatum fit, quia initiales notiones ab re dura divergere incipiunt. Hoc neque bonum neque malum est: difficile est disputare et vivendum cum data est. Pars huius processus est reficiens. Infrastructure ut Codex Refactoring. Fabula incipiatur quomodo refactor Ansible per annum et non insanit.

Nativitas Legati

Dies # I: Patientes Zero

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Olim consilium conditionale erat. Habuit turmam Dev development et Opem fabrum. Eandem quaestionem solvebant: quomodo ministri explicandi et applicationem currunt. Problema erat singulas turmas suo modo hanc quaestionem solvisse. Ad propositum, placuit Ansible scientiam inter Dev et Ops iunctos synchronizare.

Dies #89: Nativitas Legati

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Hoc sine animadversione ipsi facere volebant quam maxime, sed evenit ut legatum esset. Quomodo hoc fiet?

  • Hic urget negotium, sordidam faciamus stragulum ac deinde refice.
  • Documenta scribere non habes et omnia plana sunt quid hic agitur.
  • Scio Ansible/Python/Bash/Terraform! Vide quomodo possum ictos!
  • Developer Stack plenus sum et hoc ex StackOverflow exscripsi, nescio quomodo operatur, sed frigus spectat et problema solvit.

Quam ob rem incomprehensibilem codicis rationem habere potes cuius documenta non est, non liquet quid agat, num opus sit, sed quaestio est, quod debes evolvere, mutare, fusum addere et sustentare; res etiam peius faciens.

- hosts: localhost
  tasks:
    - shell: echo -n Z >> a.txt && cat a.txt
      register: output
      delay: 1
      retries: 5
      until: not output.stdout.find("ZZZ")

Dies # CIX: conscientia problema

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

IaC exemplar conceptum et effectum initio non amplius occurrit requisitis utentium / negotiorum / aliis iugis, et tempus mutandi infrastructuram acceptabilem esse desinit. In hoc momento, intellectus venit tempus agendi.

Iac refactoring

Day #139: Do you really need refactoring?

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Priusquam ruis ad reactorem, pluribus quaestionibus momentis respondere debes;

  1. Quid opus est omnibus?
  2. Habesne tempus?
  3. Satisne scientia?

Si nescis respondere ad interrogata, finiet refactor, antequam vel incipiat, vel tantum deterior. Quod habuit experientiam ( Quod didici ex probatione 200 Linearum Infrastructure Codicis) , deinde consilium petitum auxilium figere muneribus ac probationibus tegere poterat.

Dies # CXLIX: Praeparans refactoring

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Primum est praeparare. Decernite quid faciemus. Ad hoc communicamus, problemata areas et vias ad solvendas figuras invenimus. Conceptus consequentes quodammodo memoramus, exempli gratia articulus in confluentes, ut cum quaeritur, quid sit optimum? aut "quod est verum?" Viam nostram non perdidimus. In casu nostro, ideae adhaeserunt divide ac regulae: infrastructuram in frusta frangimus. Hic accessus sinit ut semel substructurae particulam sumas, quid agat intellegas, eam cum probationibus operias ac sine metu ne frangendi aliquid mutes.

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Evenit ut infrastructura probatio angularis fiat et hic memorabile est infrastructuram probationis pyramidis. Prorsus eadem idea quae in evolutione est, sed pro infrastructura: movemur ex vili velocem probationibus quae simplicia reprimuntur, ut incisum, ad pretiosas plenas probationes plenas discursus, qui totam infrastructuram explicant.

Ansible probatio conatusque prohibebit

Priusquam ad describere pergamus quomodo probationes Ansible in incepto perteximus, conatus et accessus describemus me occasione utendi antea ad cognoscendum contextum decisionum factarum.

Dies No. -997: SDS provisionis

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Primum tempus probavi Ansible in consilio SDS explicandi (Software Repono Definitum). Articulus separatus in hac re est
Quomodo birotas frangere super fusum, cum tentat distributionem tuam?sed denique inverso experimento pyramidis et experimento 60-90 minutas partes una, quae longum tempus est, consumpsimus. Fundamentum e2e probat, i.e. institutionem plenam discubuimus et deinde probavimus. Quod etiam maius fuit in birota sua inventa. Sed, fateor, hanc solutionem laboravi et stabili emissione permissa est.

Dies #-701 Ansible et test culinam

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Explicatio ideae ansibilis experimenti erat usus instrumentorum prompti facti, nempe coquinae / coquinae-ci et inspec. Electio per cognitionem Ruby constituta est (per plura vide articulum de Habré: Visne YML programmatores somnia tentandi Ansible?) velocius laboravit circiter 40 minuta pro 10 muneribus. Machinarum virtualis fasciculum creavimus et tentationes intus cucurrimus.

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

In genere, solutio operata est, sed aliqua faex erat propter heterogeneitatem. Cum numerus probatorum hominum auctus est ad 13 partes praecipuas et 2 partes metatorias iungentes partes minores, tunc subito probationes currere coeperunt per 70 minuta, quod est fere 2 temporibus longior. Difficile est loqui de XP (extreme programmationis) exercitia quia... nemo velit exspectare LXX minuta. Haec causa mutandi accessus

Dies #-601: Ansible et moleculae

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Ratione, hoc testkitchen simile est, tantum partes movimus temptantes in docina et acervum mutaverunt. Quam ob rem tempus 20-25 minutarum 7 partium ad stabilitatem redactum est.

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Numerum probatarum partium ad 17 et 45 partes linteandi augendo, hoc in 28 minutas in 2 jenkins servi cucurrimus.

Dies # CLXVII: Ansible probat ad project

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Maxime, non poterit festinanter facere negotium refactorem. Mensurabile opus est ut eam minutatim frangere possis et elephas per partes cum gramma edas. Oportet intelligere utrum movearis in rectum, quousque.

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

In genere, non refert quomodo fiet, chartam scribere potes, in armarium ponere potes, officia in Jira creare potes, vel Google Docs aperire et hodiernam statum scribere potes. ibi. Crura crescunt ex hoc quod non est immediata processus, longum et longum erit. Verisimile est quod quis te ex ideis urere vult, defatigare et obrui in refactore.

Reparatio simplex est;

  • Manducare.
  • Somnum.
  • Codicis.
  • IaC test.
  • repeat

et hoc repetimus donec ad finem intentum perveniat.

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Fieri non potest ut omnia statim tentare incipiant, sic primum opus fuit ut syntaxin includere et inhibere inciperet.

Dies # CLXXXI: Viridis aedificate Master

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Lining parvus gradus primus est ad Viridem Aedificandi Magistrum. Hoc fere nihil non franget, sed processus ludificari te permittit et virides aedificationes in Jenkins efficit. Idea est habitus in quadrigis;

  • Rubra mala probat.
  • Veni ut codicem paulo melius quam ante te constituam et simul constituam.

Dies # CXCIII: Ex linting ad unitatis probat

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Processum in domino acquirendi aedificato, processum gradatim emendandi inire potes - repositoque linteolo cum muneribus deducendis, etiam sine eadem potentia facere potes. Opus est intelligere quomodo partes applicare et quomodo operantur.

Dies #211: Ab unitate usque ad integrationem probat

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Cum plurimae partes unitatis probationibus teguntur et omnia linteantur, potes in probationibus integrationem addere. Illae. tentantes non unum laterem in infrastructura, sed compositum ex eis, exempli gratia, figura plena exempli.

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Jenkins utentes, multas gradus munerum/fabularum parallelarum linteatorum generavimus, deinde unitates probationes in vasis, postremo integrationes probationes.

Jenkins + Docker + Ansible = Tests

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

  1. Checkout repo et generate constructum mansiones.
  2. In linteolum playbook stadia currunt parallela.
  3. Linamentum partes gradus currunt in parallelis.
  4. Currite syntaxin perscriptio partes gradus in parallelis.
  5. Currite partes experimentorum gradus in parallelis.
    1. Linamentum munus.
    2. Check dependentiam in aliis muneribus.
    3. Syntaxis Reprehendo.
    4. Create docker exempli gratia
    5. Curre moleculae/default/playbook.yml.
    6. Compesce idempotentia.
  6. Currere probat integrationem
  7. perago

Day #271: Bus Factor

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Primo, refactoria duorum vel trium hominum per parva coetus facta est. Codicem in magistro recensuerunt. Subinde, turma elaborata est scientia quomodo codicem et codicem scribere contulerit, ut fossio cognitionis de infrastructura et quomodo operatur. In CALEO hic fuit quod Recognitores singillatim ex schedula selecti sunt, i.e. aliquo probabilitatis gradu in novam infrastructuram ascendes.

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Commodi sit et hic. Recognitionem facere convenit, intra cuius operis fiebat ambitum, et in historia disputationum vide. Inteximus jenkins + bitbucket + jira.

Sed ut talis, recensio non est panacea, aliquo modo in magistrum codicem invenimus, qui nos tentationes flop fecit:

- get_url:
    url: "{{ actk_certs }}/{{ item.1 }}"
    dest: "{{ actk_src_tmp }}/"
    username: "{{ actk_mvn_user }}"
    password: "{{ actk_mvn_pass }}"
  with_subelements:
    - "{{ actk_cert_list }}"
    - "{{ actk_certs }}"
  delegate_to: localhost

- copy:
    src: "{{ actk_src_tmp }}/{{ item.1 }}"
    dest: "{{ actk_dst_tmp }}"
  with_subelements:
    - "{{ actk_cert_list }}"
    - "{{ actk_certs }}"

Tum fixerunt, sedimen manebat.

get_url:
    url: "{{ actk_certs }}/{{ actk_item }}"
    dest: "{{ actk_src_tmp }}/{{ actk_item }}"
    username: "{{ actk_mvn_user }}"
    password: "{{ actk_mvn_pass }}"
  loop_control:
    loop_var: actk_item
  with_items: "{{ actk_cert_list }}"
  delegate_to: localhost

- copy:
    src: "{{ actk_src_tmp }}/{{ actk_item }}"
    dest: "{{ actk_dst_tmp }}"
  loop_control:
    loop_var: actk_item
  with_items: "{{ actk_cert_list }}"

Dies # CCCXI: accelerare probat

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Subinde plures probationes erant, aedificans tardius cucurrit, usque ad horam in pessimo casu. In una e retros facta est locutio sicut “bonum est quod sunt experimenta, sed tarda sunt”. Quam ob rem, integrationem virtualem machinis probatam relinquimus, easque Docker ad hoc citius aptandas aptavimus. Etiam testinfra substituimus cum verificante ansible numerum instrumentorum ad redigendum adhibitum.

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Proprie mensurarum copia erat;

  1. Navale vertas.
  2. Partes remove probationis, quae duplicantur propter clientelas.
  3. Servorum numerum auge.
  4. Test run ordo.
  5. Facultatem ad linteolum OMNIS uno imperio localiter.

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Quam ob rem Pipeline in jenkins etiam una erat

  1. Generare mansiones aedificare.
  2. Linamenta omnia parallela.
  3. Currite partes experimentorum gradus in parallelis.
  4. Metam.

Lectiones didicit

Vitare global variables

Ansible variabilium globalem adhibet, partialem habemus in forma private_role_varssed hoc non est panacis.

Demus vobis exemplum. habeamus role_a и role_b

# cat role_a/defaults/main.yml
---
msg: a

# cat role_a/tasks/main.yml
---
- debug:
    msg: role_a={{ msg }}

# cat role_b/defaults/main.yml
---
msg: b

# cat role_b/tasks/main.yml
---
- set_fact:
    msg: b
- debug:
    msg: role_b={{ msg }}

- hosts: localhost
  vars:
    msg: hello
  roles:
    - role: role_a
    - role: role_b
  tasks:
    - debug:
        msg: play={{msg}}

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Ridiculum est quod effectus fabularum ex rebus non semper manifestis dependet, sicut ordo in quo partes enumerantur. Dolendum est, haec natura Ansible et optimum, quod fieri potest, est utendum quodam pacto, exempli gratia, intra partes, utere modo variabili in hoc munere descripto.

BAD: global variabilis utere.

# cat roles/some_role/tasks/main.yml
---
debug:
  var: java_home

BONUM: V defaults definiunt variabiles necessarias et postea tantum eas utere.

# cat roles/some_role/defaults/main.yml
---
r__java_home:
 "{{ java_home | default('/path') }}"

# cat roles/some_role/tasks/main.yml
---
debug:
  var: r__java_home

Praefixum munus variabilium

BAD: global variabilis utere.

# cat roles/some_role/defaults/main.yml
---
db_port: 5432

BONUMIn muneribus variabilium, variabilibus praefixis muneribus nomine utuntur, hoc, inspiciendo inventarium, facilius quid eveniunt comprehendere faciet.

# cat roles/some_role/defaults/main.yml
---
some_role__db_port: 5432

Usus loop imperium variabilis

BAD: Utere vexillum variabile in ora sagi alterius item, si hoc munus / playbook alicubi comprehenditur , hoc potest ad mores inopinatos ducere

---
- hosts: localhost
  tasks:
    - debug:
        msg: "{{ item }}"
      loop:
        - item1
        - item2

BONUM: Redefine variabilis per loop per loop_var.

---
- hosts: localhost
  tasks:
    - debug:
        msg: "{{ item_name }}"
      loop:
        - item1
        - item2
      loop_control:
        loop_var: item_name

Reprehendo initus variables

Consensimus variabilibus praepositionibus uti, non supervacaneum est cohibere eas definiri sicut speramus et, exempli gratia, inani valore non opprimi.

BONUM: Check variables.

- name: "Verify that required string variables are defined"
  assert:
    that: ahs_var is defined and ahs_var | length > 0 and ahs_var != None
    fail_msg: "{{ ahs_var }} needs to be set for the role to work "
    success_msg: "Required variables {{ ahs_var }} is defined"
  loop_control:
    loop_var: ahs_var
  with_items:
    - ahs_item1
    - ahs_item2
    - ahs_item3

Vitare hashes dictionary, plana structuram uti

Si munus Nullam/dictionarium in uno e parametris expectet, tum si velimus unum pueri mutare parametri, necesse erit totam dictionarium Nullam/dictionarium praevertere, quod configurationem multiplicitatem augebit.

BAD: Nullam utere / dictionary.

---
user:
  name: admin
  group: admin

BONUM: Utere plana variabili structura.

---
user_name: admin
user_group: "{{ user_name }}"

Create idempotent playbooks & roles

Munera et playbooks idempotent esse oportet, quia reduces configuratione calliditate et timore aliquid frangendi. Sed si moleculo uteris, hic habitus est defectus.

Fugientes mandatum testa modules

Testa moduli utens consequitur paradigma imperativi descriptionis, loco declarativi, qui est nucleus Ansible.

Munera tua temptare per moleculae

Molecule res admodum flexibilis est, paucos videamus missiones.

Moleculae instantiae multiplices

В molecule.yml in sectione platforms multas virtutes describere potes quas explicas.

---
    driver:
      name: docker
    platforms:
      - name: postgresql-instance
        hostname: postgresql-instance
        image: registry.example.com/postgres10:latest
        pre_build_image: true
        override_command: false
        network_mode: host
      - name: app-instance
        hostname: app-instance
        pre_build_image: true
        image: registry.example.com/docker_centos_ansible_tests
        network_mode: host

Ideoque hae virtutes tunc esse possunt converge.yml utere;

---
- name: Converge all
  hosts: all
  vars:
    ansible_user: root
  roles:
    - role: some_role

- name: Converge db
  hosts: db-instance
  roles:
    - role: some_db_role

- name: Converge app
  hosts: app-instance
  roles:
    - role: some_app_role

Ansible uerificantis

In moleculo potest uti ansibilis ad reprimendum quod instantia recte figurata est, haec autem fuit defectus post solutionem III. Non tam flexibilis quam testinfra/inspec, sed inspicere possumus contenta tabella exspectationi nostrae aequare:

---
- name: Verify
  hosts: all
  tasks:
    - name: copy config
      copy:
        src: expected_standalone.conf
        dest: /root/wildfly/bin/standalone.conf
        mode: "0644"
        owner: root
        group: root
      register: config_copy_result

    - name: Certify that standalone.conf changed
      assert:
        that: not config_copy_result.changed

Sive ministerium explicas, expecta illum ut praesto fiat et fumum experiaris;

---
  - name: Verify
    hosts: solr
    tasks:
      - command: /blah/solr/bin/solr start -s /solr_home -p 8983 -force
      - uri:
          url: http://127.0.0.1:8983/solr
          method: GET
          status_code: 200
        register: uri_result
        until: uri_result is not failed
        retries: 12
        delay: 10
      - name: Post documents to solr
        command: /blah/solr/bin/post -c master /exampledocs/books.csv

Pone logicam complexam in modulorum & plugins

Aduocati ansibilis accedunt declarativa, ut cum codicem vara, data transmutatione, testa modulorum, codicem lectu difficile fit. Ad haec certandum et simplex ad intellegendum servandum, supervacaneum erit hanc multiplicitatem pugnare cum modulos tuos creando.

Apicibus Summatim & Furta

  1. Vitare global variabiles.
  2. Praepositiones partes variabiles.
  3. Utere loop imperium variabile.
  4. Check input variables.
  5. Fuge hashes dictionaria, plana structura utere.
  6. Partum idempotent fabularum & munerum.
  7. Fugientes mandatum testa modulorum.
  8. Munera tua tempta per moleculae.
  9. Pone logicam complexam in modulos & plugins.

conclusio,

Quomodo incipere tentationem Ansible, refactorem propositi per annum et non insanire?

Ire non potes ac reformare infrastructuram in incepto, etiam si IaC habes. Longum est hoc opus patientiae, temporis ac scientiae.

UPD1 2020.05.01 20:30 - Pro prima profiling playbooks uti potes callback_whitelist = profile_tasks quidnam opus sit diu. Deinde itur per Ansible acceleratio classica. Etiam experiri potes mitogen
UPD2 2020.05.03 16:34 - anglicus Vulgate

Source: www.habr.com

Add a comment