āĻāĻŽāĻŋ āϏāĻŽā§āĻĒā§āϰāϤāĻŋ āϞāĻŋāĻā§āĻāĻŋ , āϝā§āĻāĻžāύ⧠āϤāĻŋāύāĻŋ āϏāĻāĻā§āώāĻŋāĻĒā§āϤāĻāĻžāĻŦā§ āĻāϞā§āϞā§āĻ āĻāϰā§āĻā§āύ āϝ⧠āĻāĻĒāύāĻŋ āύāĻŋāĻā§āϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āϏāĻŋāϏā§āĻā§āĻŽ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āϝāĻžāϤ⧠āĻā§āĻŦā§āϰ⧠āĻĒāϰāĻŋāώā§āĻŦāĻžāĻāĻŋ āĻāĻžāϞāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§, āĻā§āĻĒāύā§āϝāĻŧāϤāĻž āϤā§āϞ⧠āϧāϰ⧠āĻāĻŦāĻ āϏā§āĻĨāĻžāύā§āϝāĻŧāĻāĻžāĻŦā§ āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻāĻāĻžāĻŦā§ āĻāĻŽāύāĻāĻŋ āĻĄāĻāĻžāϰā§āϰ āĻŦāĻžāĻāϰā§āĻ āĻāϞā§āĨ¤ āĻāĻŋāĻā§ āĻāĻāĻŋāϞ āύāϝāĻŧ, āϤāĻŦā§ āĻŦāϰā§āĻŖāĻŋāϤ "āϰā§āϏāĻŋāĻĒāĻŋ" āĻāĻžāϰ⧠āĻāύā§āϝ āĻāĻĒāϝā§āĻā§ āĻšāϤ⧠āĻĒāĻžāϰ⧠:) āĻā§āĻĄāĻāĻŋ āĻĒāĻžāĻāĻĨāύ⧠āϰāϝāĻŧā§āĻā§, āĻāĻŋāύā§āϤ⧠āϝā§āĻā§āϤāĻŋāĻāĻŋ āĻāĻžāώāĻžāϰ āϏāĻžāĻĨā§ āĻāĻŦāĻĻā§āϧ āύāϝāĻŧāĨ¤

āĻĒā§āϰāĻļā§āύā§āϰ āĻĒāĻāĻā§āĻŽāĻŋ āĻāĻ: āĻāĻ āϏāĻŽāϝāĻŧ āĻāĻāĻāĻŋ āĻĒā§āϰāĻāϞā§āĻĒ āĻāĻŋāϞ, āĻĒā§āϰāĻĨāĻŽā§ āĻāĻāĻŋ āĻāĻāĻāĻŋāϞāĻŋāĻāĻŋ āĻāĻŦāĻ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āϏāĻš āĻāĻāĻāĻŋ āĻā§āĻ āĻŽāύā§āϞāĻŋāĻĨ āĻāĻŋāϞ, āĻāĻŋāύā§āϤ⧠āϏāĻŽāϝāĻŧā§āϰ āϏāĻžāĻĨā§ āϏāĻžāĻĨā§ āĻāĻāĻŋ āĻŦā§āĻĄāĻŧā§āĻā§, āĻĒāϰāĻŋāώā§āĻŦāĻžāĻā§āϞāĻŋāϤ⧠āĻŦāĻŋāĻāĻā§āϤ āĻšāϝāĻŧā§āĻā§, āϝāĻž āĻĢāϞāϏā§āĻŦāϰā§āĻĒ āĻŽāĻžāĻāĻā§āϰā§āϏāĻžāϰā§āĻāĻŋāϏ⧠āĻŦāĻŋāĻāĻā§āϤ āĻšāϤ⧠āĻļā§āϰ⧠āĻāϰā§āĻā§ āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ āϏā§āĻā§āϞ āĻāĻĒ. āĻĒā§āϰāĻĨāĻŽā§, āĻāĻ āϏāĻŽāϏā§āϤ āĻŦā§āϝāĻŧāĻžāϰ āĻāĻŋāĻĒāĻŋāĻāϏ-āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ, āĻā§āĻĄ āϏā§āĻ āĻāĻĒ āĻāĻŦāĻ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻžāϰ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻā§āϞāĻŋ āϝāĻžāϰ āĻāĻĒāϰ Ansible āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ, āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒāϰāĻŋāώā§āĻŦāĻž āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āϏā§āĻāĻŋāĻāϏ āĻāĻŦāĻ āĻā§āĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āĻāĻāĻāĻŋ YAML āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύā§āϰ āϏāĻžāĻĨā§ āĻāĻŽā§āĻĒāĻžāĻāϞ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ, āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ āύā§āϰā§āĻĒ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻĢāĻžāĻāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ āϏā§āĻĨāĻžāύā§āϝāĻŧ āϞāĻā§āĻāĻā§āϞāĻŋ, āϝāĻž āĻā§āĻŦ āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻ āĻāĻŋāϞ, āĻāĻžāϰāĻŖ .k āĻāĻ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύāĻāĻŋ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻŦāĻŦā§āϝāĻžāĻĒā§ āĻ āĻŦāĻā§āĻā§āĻā§ āϞā§āĻĄ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§, āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āϝ⧠āĻā§āύāĻ āĻāĻžāϝāĻŧāĻāĻž āĻĨā§āĻā§ āĻ ā§āϝāĻžāĻā§āϏā§āϏāϝā§āĻā§āϝāĨ¤
āϝāĻžāĻāĻšā§āĻ, āĻŽāĻžāĻāĻā§āϰā§āϏāĻžāϰā§āĻāĻŋāϏā§āϰ āϏāĻāĻā§āϝāĻž āĻŦā§āĻĻā§āϧāĻŋ, āϤāĻžāĻĻā§āϰ āϏāĻāϝā§āĻ, āĻāĻŦāĻ , āĻā§āĻŦā§āϰā§āϰ āĻāĻāĻāĻŋ āĻĒāĻĻāĻā§āώā§āĻĒā§āϰ āĻĒā§āϰā§āĻŦāĻžāĻāĻžāϏ āĻĻāĻŋāϝāĻŧā§āĻā§āύ, āϝāĻž āĻāĻāύāĻ āĻāϞāĻā§āĨ¤ āĻāϞā§āϞāĻŋāĻāĻŋāϤ āϏāĻŽāϏā§āϝāĻžāĻā§āϞāĻŋ āϏāĻŽāĻžāϧāĻžāύ⧠āϏāĻšāĻžāϝāĻŧāϤāĻžāϰ āϏāĻžāĻĨā§, āĻā§āĻŦāĻžāϰāύā§āĻāϏ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§ āĻŦā§āϝāĻŦāϏā§āĻĨāĻžāĻĒāύāĻžāϰ āĻāύā§āϝ āϤāĻžāϰ āĻĒāύā§āĻĨāĻžāĻā§āϞāĻŋ āĻ āĻĢāĻžāϰ āĻāϰā§, āϝāĻžāϰ āĻŽāϧā§āϝ⧠āϰāϝāĻŧā§āĻā§ Đ¸ . āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻāĻŋ āĻŽāĻžāύāĻ āĻāĻŦāĻ āύāĻŋāϰā§āĻāϰāϝā§āĻā§āϝ, āϤāĻžāĻ āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻāϰāĻž āĻāĻā§āώāϰāĻŋāĻ āĻ āϰā§āĻĨā§āĻ āĻāĻāĻāĻŋ āĻĒāĻžāĻĒ! āĻāĻŋāύā§āϤ⧠āĻāĻāĻ āϏāĻŽāϝāĻŧā§, āĻāĻŽāĻŋ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻŽāĻžāϰ āĻŦāϰā§āϤāĻŽāĻžāύ āĻŦāĻŋāύā§āϝāĻžāϏ āĻŦāĻāĻžāϝāĻŧ āϰāĻžāĻāϤ⧠āĻāĻžāĻ: āĻĒā§āϰāĻĨāĻŽāϤ, āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻŦāĻŋāĻāĻŋāύā§āύ āĻŽāĻžāĻāĻā§āϰā§āϏāĻžāϰā§āĻāĻŋāϏ⧠āĻāĻāĻāĻāĻžāĻŦā§ āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻŦāĻ āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧāϤ, āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻŽā§āĻļāĻŋāύ⧠āĻā§āĻĄ āĻāĻžāϞāĻžāϤ⧠āϏāĻā§āώāĻŽ āĻšāϤ⧠āĻāύāĻĢāĻŋāĻāĻžāϰ āĻĢāĻžāĻāϞāĨ¤
āĻāĻ āĻŦāĻŋāώāϝāĻŧā§, āĻāĻŽāĻžāĻĻā§āϰ āĻā§āϞāĻžāϏāĻŋāĻ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĢāĻžāĻāϞ āĻāĻŦāĻ āĻā§āĻŦā§āϰā§āϰ āĻā§āĻĒāύā§āϝāĻŧāϤāĻž āĻāĻāϝāĻŧā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāϤ⧠āϏāĻā§āώāĻŽ āĻšāĻāϝāĻŧāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻ āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋāϰ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āϤā§āϤā§āϝāĻŧ āĻĒāĻžāĻāĻĨāύā§āϰ āĻāĻžāώāĻžāϝāĻŧ āĻāϰāĻ āĻāĻ ā§āϰ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāĻžāĻ āĻžāĻŽā§āĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ, āύāĻŋāĻŽā§āύāϰā§āĻĒ:
Dict[str, Dict[str, Union[str, int, float]]]
āĻ āϰā§āĻĨāĻžā§, āĻā§āĻĄāĻŧāĻžāύā§āϤ āĻāĻāĻĢāĻŋāĻ āĻšāϞ āύāĻžāĻŽāϝā§āĻā§āϤ āĻŦāĻŋāĻāĻžāĻ āϏāĻš āĻāĻāĻāĻŋ āĻ āĻāĻŋāϧāĻžāύ, āϝāĻžāϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻĒā§āϰāĻāĻžāϰā§āϰ āĻŽāĻžāύ āϏāĻš āĻāĻāĻāĻŋ āĻ āĻāĻŋāϧāĻžāύāĨ¤ āĻāĻŦāĻ āĻŦāĻŋāĻāĻžāĻāĻā§āϞāĻŋ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϧāϰāĻŖā§āϰ āϏāĻāϏā§āĻĨāĻžāύāĻā§āϞāĻŋāϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻāĻŦāĻ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻŦāϰā§āĻŖāύāĻž āĻāϰā§āĨ¤ āĻāĻŽāĻžāĻĻā§āϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύā§āϰ āĻāĻāĻāĻŋ āĻ āĻāĻļā§āϰ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ:
adminka:
django_secret: "ExtraLongAndHardCode"
db_main:
engine: mysql
host: 256.128.64.32
user: cool_user
password: "SuperHardPassword"
redis:
host: 256.128.64.32
pw: "SuperHardPassword"
port: 26379
smtp:
server: smtp.gmail.com
port: 465
email: info@test.com
pw: "SuperHardPassword"āĻāĻāĻ āϏāĻā§āĻā§ āĻŽāĻžāĻ engine āĻĄāĻžāĻāĻžāĻŦā§āϏ SQLite āĻ āĻāύāϏā§āĻāϞ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§, āĻāĻŦāĻ redis āϏā§āĻ mock, āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĢāĻžāĻāϞā§āϰ āύāĻžāĻŽāĻ āĻāϞā§āϞā§āĻ āĻāϰ⧠- āĻāĻ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋāĻā§āϞāĻŋ āϏāĻ āĻŋāĻāĻāĻžāĻŦā§ āϏā§āĻŦā§āĻā§āϤ āĻāĻŦāĻ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻāĻžāϤ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§, āϝāĻž āĻĄāĻŋāĻŦāĻžāĻāĻŋāĻ, āĻāĻāύāĻŋāĻ āĻĒāϰā§āĻā§āώāĻž āĻāĻŦāĻ āĻ
āύā§āϝ āϝā§āĻā§āύ⧠āĻĒā§āϰāϝāĻŧā§āĻāύā§āϰ āĻāύā§āϝ āϏā§āĻĨāĻžāύā§āϝāĻŧāĻāĻžāĻŦā§ āĻā§āĻĄ āĻāĻžāϞāĻžāύ⧠āϏāĻšāĻ āĻāϰ⧠āϤā§āϞā§āĨ¤ āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āĻāύā§āϝ āĻŦāĻŋāĻļā§āώāĻāĻžāĻŦā§ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻāĻžāϰāĻŖ āĻāϰāĻ āĻ
āύā§āĻ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāϤāĻž āϰāϝāĻŧā§āĻā§ - āĻāĻŽāĻžāĻĻā§āϰ āĻā§āĻĄā§āϰ āĻ
āĻāĻļāĻāĻŋ āĻŦāĻŋāĻāĻŋāύā§āύ āĻŦāĻŋāĻļā§āϞā§āώāĻŖāĻžāϤā§āĻŽāĻ āĻāĻŖāύāĻžāϰ āĻāĻĻā§āĻĻā§āĻļā§āϝ⧠āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§, āĻāĻāĻŋ āĻā§āĻŦāϞ āĻ
āϰā§āĻā§āϏā§āĻā§āϰā§āĻļāύ āϏāĻš āϏāĻžāϰā§āĻāĻžāϰāĻā§āϞāĻŋāϤā§āĻ āύāϝāĻŧ, āĻŦāĻŋāĻāĻŋāύā§āύ āϏā§āĻā§āϰāĻŋāĻĒā§āĻāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āĻāĻŦāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻāĻĻā§āϰ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāϰ⧠āĻāĻžāĻ āĻāϰ⧠āϝāĻžāĻĻā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻāĻŦāĻ āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āϏāĻŽāϏā§āϝāĻž āĻāĻŋāύā§āϤāĻž āύāĻž āĻāϰ⧠āĻāĻāĻŋāϞ āĻĄā§āĻāĻž āĻĒā§āϰāϏā§āϏāĻŋāĻ āĻĒāĻžāĻāĻĒāϞāĻžāĻāύ āĻĄāĻŋāĻŦāĻžāĻ āĻāϰā§āύāĨ¤ āϝāĻžāĻāĻšā§āĻ, āĻāύāĻĢāĻŋāĻāĻžāϰ āϞā§āĻāĻāĻ āĻā§āĻĄ āϏāĻš āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāϧāĻžāύ āϏāϰāĻā§āĻāĻžāĻŽāĻā§āϞāĻŋ āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāύāϏā§āĻāϞ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āϤāĻž āĻļā§āϝāĻŧāĻžāϰ āĻāϰāϤ⧠āĻā§āώāϤāĻŋ āĻšāĻŦā§ āύāĻž setup.py - āĻāĻāϏāĻžāĻĨā§ āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āĻā§āĻĄāĻā§ āĻāĻāĻāĻŋ āĻāĻāĻ āĻāĻā§āϏāĻŋāϏā§āĻā§āĻŽā§ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰā§, āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻĒāĻĻā§āϧāϤāĻŋ āĻĨā§āĻā§ āϏā§āĻŦāĻžāϧā§āύāĨ¤
āĻāĻāĻāĻŋ Kubernetes āĻĒāĻĄā§āϰ āĻŦāϰā§āĻŖāύāĻž āĻāĻ āĻŽāϤ āĻĻā§āĻāĻžāϝāĻŧ:
containers:
- name : enter-api
image: enter-api:latest
ports:
- containerPort: 80
volumeMounts:
- name: db-main-secret-volume
mountPath: /etc/secrets/db-main
volumes:
- name: db-main-secret-volume
secret:
secretName: db-main-secretāĻ āϰā§āĻĨāĻžā§, āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻā§āĻĒāύ āĻāĻāĻāĻŋ āĻŦāĻŋāĻāĻžāĻ āĻŦāϰā§āĻŖāύāĻž āĻāϰā§āĨ¤ āĻā§āĻĒāύā§āϝāĻŧāϤāĻžāĻā§āϞāĻŋ āύāĻŋāĻā§āϰāĻžāĻ āĻāĻāĻžāĻŦā§ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ:
apiVersion: v1
kind: Secret
metadata:
name: db-main-secret
type: Opaque
stringData:
db_main.yaml: |
engine: sqlite
filename: main.sqlite3āĻāĻāϏāĻžāĻĨā§ āĻāϰ āĻĢāϞ⧠āĻĒāĻĨ āĻŦāϰāĻžāĻŦāϰ YAML āĻĢāĻžāĻāϞ āϤā§āϰāĻŋ āĻšāϝāĻŧ /etc/secrets/db-main/section_name.yaml
āĻāĻŦāĻ āϏā§āĻĨāĻžāύā§āϝāĻŧ āϞāĻā§āĻā§āϰ āĻāύā§āϝ, āĻāύāĻĢāĻŋāĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ, āϝāĻž āĻĒā§āϰāĻā§āĻā§āĻā§āϰ āϰā§āĻ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϤ⧠āĻŦāĻž āĻĒāϰāĻŋāĻŦā§āĻļ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĒāĻĨ āĻŦāϰāĻžāĻŦāϰ āĻ āĻŦāϏā§āĻĨāĻŋāϤāĨ¤ āĻāĻ āϏā§āĻŦāĻŋāϧāĻžāϰ āĻāύā§āϝ āĻĻāĻžāϝāĻŧā§ āĻā§āĻĄāĻāĻŋ āϏā§āĻĒāϝāĻŧāϞāĻžāϰ⧠āĻĻā§āĻāĻž āϝāĻžāϝāĻŧāĨ¤
config.py
__author__ = 'AivanF'
__copyright__ = 'Copyright 2020, AivanF'
import os
import yaml
__all__ = ['config']
PROJECT_DIR = os.path.abspath(__file__ + 3 * '/..')
SECRETS_DIR = '/etc/secrets'
KEY_LOG = '_config_log'
KEY_DBG = 'debug'
def is_yes(value):
if isinstance(value, str):
value = value.lower()
if value in ('1', 'on', 'yes', 'true'):
return True
else:
if value in (1, True):
return True
return False
def update_config_part(config, key, data):
if key not in config:
config[key] = data
else:
config[key].update(data)
def parse_big_config(config, filename):
'''
Parse YAML config with multiple section
'''
if not os.path.isfile(filename):
return False
with open(filename) as f:
config_new = yaml.safe_load(f.read())
for key, data in config_new.items():
update_config_part(config, key, data)
config[KEY_LOG].append(filename)
return True
def parse_tiny_config(config, key, filename):
'''
Parse YAML config with a single section
'''
with open(filename) as f:
config_tiny = yaml.safe_load(f.read())
update_config_part(config, key, config_tiny)
config[KEY_LOG].append(filename)
def combine_config():
config = {
# To debug config load code
KEY_LOG: [],
# To debug other code
KEY_DBG: is_yes(os.environ.get('DEBUG')),
}
# For simple local runs
CONFIG_SIMPLE = os.path.join(PROJECT_DIR, 'config.yaml')
parse_big_config(config, CONFIG_SIMPLE)
# For container's tests
CONFIG_ENVVAR = os.environ.get('CONFIG')
if CONFIG_ENVVAR is not None:
if not parse_big_config(config, CONFIG_ENVVAR):
raise ValueError(
f'No config file from EnvVar:n'
f'{CONFIG_ENVVAR}'
)
# For K8s secrets
for path, dirs, files in os.walk(SECRETS_DIR):
depth = path[len(SECRETS_DIR):].count(os.sep)
if depth > 1:
continue
for file in files:
if file.endswith('.yaml'):
filename = os.path.join(path, file)
key = file.rsplit('.', 1)[0]
parse_tiny_config(config, key, filename)
return config
def build_config():
config = combine_config()
# Preprocess
for key, data in config.items():
if key.startswith('db_'):
if data['engine'] == 'sqlite':
data['filename'] = os.path.join(PROJECT_DIR, data['filename'])
# To verify correctness
if config[KEY_DBG]:
print(f'** Loaded config:n{yaml.dump(config)}')
else:
print(f'** Loaded config from: {config[KEY_LOG]}')
return config
config = build_config()āĻāĻāĻžāύ⧠āϝā§āĻā§āϤāĻŋāĻāĻŋ āĻŦā§āĻļ āϏāĻšāĻ: āĻāĻŽāϰāĻž āĻĒā§āϰāĻā§āĻā§āĻ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋ āĻĨā§āĻā§ āĻŦāĻĄāĻŧ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāĻŦāĻ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻĻā§āĻŦāĻžāϰāĻž āĻĒāĻžāĻĨ āĻāĻŦāĻ āĻā§āĻŦā§āϰ āϏāĻŋāĻā§āϰā§āĻāϏ āĻĨā§āĻā§ āĻā§āĻ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻŦāĻŋāĻāĻžāĻāĻā§āϞāĻŋāĻā§ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰāĻŋ, āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ⧠āϏā§āĻā§āϞāĻŋāĻā§ āĻāĻāĻā§ āĻĒā§āϰāĻŋāĻĒā§āϰāϏā§āϏ āĻāϰāĻŋāĨ¤ āĻĒā§āϞāĻžāϏ āĻāĻŋāĻā§ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ. āĻāĻŽāĻŋ āϞāĻā§āώā§āϝ āĻāϰāĻŋ āϝ⧠āĻā§āĻĒāύā§āϝāĻŧāϤāĻž āĻĨā§āĻā§ āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āĻ āύā§āϏāύā§āϧāĻžāύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻāĻŋ āĻāĻā§āϰāϤāĻž āϏā§āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ, āĻāĻžāϰāĻŖ K8s āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻā§āĻĒāύā§āϝāĻŧāϤāĻžāϝāĻŧ āĻāĻāĻāĻŋ āϞā§āĻāĻžāύ⧠āĻĢā§āϞā§āĻĄāĻžāϰ āϤā§āϰāĻŋ āĻāϰ⧠āϝā§āĻāĻžāύ⧠āĻā§āĻĒāύā§āϝāĻŧāϤāĻžāĻā§āϞāĻŋ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āĻā§āĻŦāϞāĻŽāĻžāϤā§āϰ āĻāĻāĻāĻŋ āϞāĻŋāĻā§āĻ āĻāĻā§āĻ āϏā§āϤāϰ⧠āĻ āĻŦāϏā§āĻĨāĻŋāϤāĨ¤
āĻāĻŽāĻŋ āĻāĻļāĻž āĻāϰāĻŋ āϝ⧠āĻŦāϰā§āĻŖāύāĻž āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āϤāĻž āĻāĻžāϰ⧠āĻāύā§āϝ āĻāĻĒāϝā§āĻā§ āĻšāĻŦā§ :) āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āĻŦāĻž āĻāύā§āύāϤāĻŋāϰ āĻāύā§āϝ āĻ āύā§āϝāĻžāύā§āϝ āĻā§āώā§āϤā§āϰ āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ āĻā§āύ āĻŽāύā§āϤāĻŦā§āϝ āĻāĻŦāĻ āϏā§āĻĒāĻžāϰāĻŋāĻļ āĻā§āĻšā§āϤ āĻšāϝāĻŧāĨ¤ āϏāĻŽā§āĻĒā§āϰāĻĻāĻžāϝāĻŧā§āϰ āĻŽāϤāĻžāĻŽāϤāĻ āĻāĻāϰā§āώāĻŖā§āϝāĻŧ, āϏāĻŽā§āĻāĻŦāϤ āĻāĻāĻŋ āĻāύāĻĢāĻŋāĻāĻŽā§āϝāĻžāĻĒ (āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāĻāϞā§āĻĒ āĻāĻāύāĻ āϏā§āĻā§āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āύāĻž) āĻāĻŦāĻ GitHub/PyPI-āϤ⧠āĻā§āĻĄ āĻĒā§āϰāĻāĻžāĻļ āĻāϰāĻžāϰ āĻāύā§āϝ āϏāĻŽāϰā§āĻĨāύ āϝā§āĻ āĻāϰāĻž āĻŽā§āϞā§āϝāĻŦāĻžāύ? āĻŦā§āϝāĻā§āϤāĻŋāĻāϤāĻāĻžāĻŦā§, āĻāĻŽāĻŋ āĻŽāύ⧠āĻāϰāĻŋ āϝ⧠āĻĒā§āϰāĻāϞā§āĻĒāĻā§āϞāĻŋ āϏāĻžāϰā§āĻŦāĻāύā§āύ āĻšāĻāϝāĻŧāĻžāϰ āĻāύā§āϝ āĻāĻ āĻāĻžāϤā§āϝāĻŧ āĻāĻŋāύāĻŋāϏāĻā§āϞāĻŋ āĻā§āĻŦ āϏā§āĻŦāϤāύā§āϤā§āϰ, āĻāĻŦāĻ āĻāĻāĻžāύ⧠āĻĻā§āĻāϝāĻŧāĻž āĻāĻāĻāĻŋāϰ āĻŽāϤ⧠āĻ āύā§āϝ āϞā§āĻā§āĻĻā§āϰ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύā§āϰ āĻĻāĻŋāĻā§ āĻāĻāĻā§ āĻāĻāĻāĻŋ āĻĻā§āĻāϝāĻŧāĻž, āĻāĻŦāĻ āϏā§āĻā§āώā§āĻŽāϤāĻž, āĻāĻŋāĻĒāϏ āĻāĻŦāĻ āϏāϰā§āĻŦā§āϤā§āϤāĻŽ āĻ āύā§āĻļā§āϞāύā§āϰ āĻāϞā§āĻāύāĻž, āϝāĻž āĻāĻŽāĻŋ āĻŽāύā§āϤāĻŦā§āϝ⧠āĻĻā§āĻāϤ⧠āĻāĻļāĻž āĻāϰāĻŋ , āϝāĻĨā§āώā§āĻ đ
āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āύāĻŋāĻŦāύā§āϧāĻŋāϤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰāĻž āĻāϰāĻŋāĻĒā§ āĻ āĻāĻļāĻā§āϰāĻšāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύāĨ¤ āĻāϰā§āύāĨ¤
āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻĒā§āϰāĻāϞā§āĻĒ/āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻšāĻŋāϏāĻžāĻŦā§ āĻĒā§āϰāĻāĻžāĻļ āĻāϰāĻž āĻāĻāĻŋāϤ?
ā§Žā§Ļ%āĻšā§āϝāĻžāĻ, āĻāĻŽāĻŋ /contribution0 āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦ
ā§Žā§Ļ%āĻšā§āϝāĻžāĻ, āĻāĻāĻž āĻŽāĻšāĻžāύ āĻļā§āύāĻžāĻā§āĻā§4
ā§Žā§Ļ%āύāĻž, āϝāĻžāϰāĻž āĻāĻāĻŋ āϤāĻžāĻĻā§āϰ āύāĻŋāĻāϏā§āĻŦ āĻŦāĻŋāύā§āϝāĻžāϏ⧠āĻāĻŦāĻ āϤāĻžāĻĻā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻ āύā§āϏāĻžāϰ⧠āĻāϰāϤ⧠āĻšāĻŦā§
ā§Žā§Ļ%āĻāĻŽāĻŋ āĻāϤā§āϤāϰ āĻĻā§āĻāϝāĻŧāĻž āĻĨā§āĻā§ āĻŦāĻŋāϰāϤ āĻĨāĻžāĻāĻŦ 3
12 āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āĻ āĻĻāĻŋāϝāĻŧā§āĻā§āύāĨ¤ 3 āĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻŦāĻŋāϰāϤ āĻāĻŋāϞā§āύāĨ¤
āĻāϤā§āϏ: www.habr.com
