tag:blogger.com,1999:blog-36200042422465015052024-03-16T04:10:39.236+03:00nixplaynethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.comBlogger1180125tag:blogger.com,1999:blog-3620004242246501505.post-10624012252753500132024-03-14T15:33:00.003+03:002024-03-14T15:36:42.822+03:00userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]<p> Убунта (а может и не только она) начала что-то мутить и творить мурню:</p><p>userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]</p><p>Фикс несложный, но при нормально отключенной авторизации по паролям надо будет ещё найти как попасть на сервер... Итак: </p><div><span style="color: #0c0d0e; font-family: inherit; font-size: var(--_pr-code-fs); font-style: inherit; font-variant-caps: inherit; font-variant-ligatures: inherit; font-weight: inherit; white-space: inherit;">echo 'PubkeyAcceptedAlgorithms +ssh-rsa' > </span><span style="color: #0c0d0e;">/etc/ssh/sshd_config.d/ssh-rsa.conf</span></div><div><span style="color: #0c0d0e;">systemctl restart sshd</span></div><div><span style="color: #0c0d0e;"><br /></span></div><div><span style="color: #0c0d0e;">PS</span></div><div><span style="color: #0c0d0e;"><div><a href="https://www.openssh.com/txt/release-8.2">https://www.openssh.com/txt/release-8.2</a></div><div><br /></div><div>It is now possible[1] to perform chosen-prefix attacks against the</div><div>SHA-1 hash algorithm for less than USD$50K. For this reason, we will</div><div>be disabling the "ssh-rsa" public key signature algorithm that depends</div><div>on SHA-1 by default in a near-future release.</div></span></div>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-24774285390591781462024-03-14T03:37:00.005+03:002024-03-14T03:37:50.884+03:00AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'<p> </p><p>python3 -m pip install pip --upgrade</p><p>pip install pyopenssl --upgrade</p>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-90858484143107400512024-03-07T14:36:00.001+03:002024-03-07T14:36:13.136+03:00параметры dockerИногда надо поменять какие-то параметры докеру, и во многих доках указан /etc/defaults/docker<div>Но если его открыть, обнаруживаем такое</div><div># THIS FILE DOES NOT APPLY TO SYSTEMD</div><div>Так что "для посмотреть" можно сделать systemctl edit --full docker</div><div><br /></div><div>И с остановкой докера есть прикол, просто systemctl stop docker.service смотрим lsof | grep dockerd и видим что оно работает дальше.</div><div>Можно делать так:</div><div>systemctl disable docker.service</div><div>systemctl stop docker.service</div><div>mount | grep overlay</div><div>umount ...</div><div>(делаем нужное)</div><div>systemctl enable docker.service</div><div>systemctl start docker.service</div>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-5089162534574983172024-02-03T17:20:00.001+03:002024-02-03T17:20:02.408+03:00установка prometheus-ansible роли<p> Есть готовый набор ролей</p><p><a href="https://github.com/prometheus-community/ansible.git">https://github.com/prometheus-community/ansible.git</a></p><p>Можно запустить через git clone, можно поставить коллекцию:</p><p>ansible-galaxy collection install prometheus.prometheus</p><p>или</p><pre style="--theme-background-attachment: auto; --theme-background-color: var(--white); --theme-background-position: top left; --theme-background-repeat: repeat; --theme-background-size: auto; --theme-base-primary-color-h: 27; --theme-base-primary-color-l: 48%; --theme-base-primary-color-s: 89%; --theme-body-font-color: var(--black-600); --theme-body-font-family: var(--ff-sans); --theme-button-active-background-color: initial; --theme-button-color: initial; --theme-button-hover-background-color: initial; --theme-button-hover-color: initial; --theme-button-outlined-border-color: initial; --theme-button-outlined-selected-border-color: initial; --theme-button-primary-active-background-color: initial; --theme-button-primary-active-color: initial; --theme-button-primary-background-color: initial; --theme-button-primary-color: initial; --theme-button-primary-hover-background-color: initial; --theme-button-primary-hover-color: initial; --theme-button-primary-selected-background-color: initial; --theme-button-primary-selected-color: initial; --theme-button-selected-background-color: initial; --theme-button-selected-color: initial; --theme-content-background-color: var(--white); --theme-content-border-color: var(--black-225); --theme-footer-background-border-top: 0; --theme-footer-background-color: hsl(210,8%,5%); --theme-footer-background-position: top left; --theme-footer-background-repeat: no-repeat; --theme-footer-background-size: auto; --theme-footer-divider-color: var(--black-500); --theme-footer-link-color-hover: var(--black-200); --theme-footer-link-color: var(--black-300); --theme-footer-padding-bottom: 0; --theme-footer-padding-top: 0; --theme-footer-text-color: var(--black-300); --theme-footer-title-color: var(--black-250); --theme-header-background-border-bottom: 0; --theme-header-background-color: var(--theme-primary); --theme-header-background-position: center left; --theme-header-background-repeat: repeat; --theme-header-background-size: auto; --theme-header-foreground-color: transparent; --theme-header-foreground-position: bottom right; --theme-header-foreground-repeat: no-repeat; --theme-header-foreground-size: auto; --theme-header-link-color: var(--theme-primary); --theme-header-sponsored-color: hsla(0,0%,100%,0.4); --theme-link-color-hover: initial; --theme-link-color-visited: initial; --theme-link-color: initial; --theme-post-body-font-family: var(--ff-sans); --theme-post-owner-background-color: var(--theme-secondary-100); --theme-post-owner-new-background-color: var(--theme-secondary-200); --theme-post-title-color-hover: var(--theme-link-color-hover); --theme-post-title-color-visited: var(--theme-link-color-visited); --theme-post-title-color: var(--theme-link-color); --theme-post-title-font-family: var(--ff-sans); --theme-primary-custom-100: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .9))); --theme-primary-custom-200: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .75))); --theme-primary-custom-300: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .5))); --theme-primary-custom-400: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), var(--theme-base-primary-color-l)); --theme-primary-custom-500: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.3))); --theme-primary-custom-600: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.6))); --theme-primary-custom: var(--theme-primary-custom-400); --theme-tag-background-color: initial; --theme-tag-border-color: initial; --theme-tag-color: initial; --theme-tag-hover-background-color: initial; --theme-tag-hover-border-color: initial; --theme-tag-hover-color: initial; --theme-tag-required-background-color: var(--theme-secondary-500); --theme-tag-required-border-color: transparent; --theme-tag-required-color: var(--white); --theme-tag-required-hover-background-color: var(--theme-secondary-400); --theme-tag-required-hover-border-color: transparent; --theme-tag-required-hover-color: var(--white); --theme-topbar-bottom-border: 1px solid var(--black-225); border-radius: var(--br-md); border: 0px; box-sizing: inherit; color: #0c0d0e; font-family: var(--ff-mono); font-feature-settings: inherit; font-kerning: inherit; font-optical-sizing: inherit; font-size: var(--fs-body1); font-stretch: inherit; font-variant-alternates: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-variant-position: inherit; font-variation-settings: inherit; line-height: var(--lh-md); margin-bottom: calc(1.5em); margin-top: 0px; max-height: 600px; overflow-wrap: normal; overflow: auto; padding: var(--su12); vertical-align: baseline; width: auto;"><code style="--theme-background-attachment: auto; --theme-background-color: var(--white); --theme-background-position: top left; --theme-background-repeat: repeat; --theme-background-size: auto; --theme-base-primary-color-h: 27; --theme-base-primary-color-l: 48%; --theme-base-primary-color-s: 89%; --theme-body-font-color: var(--black-600); --theme-body-font-family: var(--ff-sans); --theme-button-active-background-color: initial; --theme-button-color: initial; --theme-button-hover-background-color: initial; --theme-button-hover-color: initial; --theme-button-outlined-border-color: initial; --theme-button-outlined-selected-border-color: initial; --theme-button-primary-active-background-color: initial; --theme-button-primary-active-color: initial; --theme-button-primary-background-color: initial; --theme-button-primary-color: initial; --theme-button-primary-hover-background-color: initial; --theme-button-primary-hover-color: initial; --theme-button-primary-selected-background-color: initial; --theme-button-primary-selected-color: initial; --theme-button-selected-background-color: initial; --theme-button-selected-color: initial; --theme-content-background-color: var(--white); --theme-content-border-color: var(--black-225); --theme-footer-background-border-top: 0; --theme-footer-background-color: hsl(210,8%,5%); --theme-footer-background-position: top left; --theme-footer-background-repeat: no-repeat; --theme-footer-background-size: auto; --theme-footer-divider-color: var(--black-500); --theme-footer-link-color-hover: var(--black-200); --theme-footer-link-color: var(--black-300); --theme-footer-padding-bottom: 0; --theme-footer-padding-top: 0; --theme-footer-text-color: var(--black-300); --theme-footer-title-color: var(--black-250); --theme-header-background-border-bottom: 0; --theme-header-background-color: var(--theme-primary); --theme-header-background-position: center left; --theme-header-background-repeat: repeat; --theme-header-background-size: auto; --theme-header-foreground-color: transparent; --theme-header-foreground-position: bottom right; --theme-header-foreground-repeat: no-repeat; --theme-header-foreground-size: auto; --theme-header-link-color: var(--theme-primary); --theme-header-sponsored-color: hsla(0,0%,100%,0.4); --theme-link-color-hover: initial; --theme-link-color-visited: initial; --theme-link-color: initial; --theme-post-body-font-family: var(--ff-sans); --theme-post-owner-background-color: var(--theme-secondary-100); --theme-post-owner-new-background-color: var(--theme-secondary-200); --theme-post-title-color-hover: var(--theme-link-color-hover); --theme-post-title-color-visited: var(--theme-link-color-visited); --theme-post-title-color: var(--theme-link-color); --theme-post-title-font-family: var(--ff-sans); --theme-primary-custom-100: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .9))); --theme-primary-custom-200: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .75))); --theme-primary-custom-300: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .5))); --theme-primary-custom-400: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), var(--theme-base-primary-color-l)); --theme-primary-custom-500: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.3))); --theme-primary-custom-600: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.6))); --theme-primary-custom: var(--theme-primary-custom-400); --theme-tag-background-color: initial; --theme-tag-border-color: initial; --theme-tag-color: initial; --theme-tag-hover-background-color: initial; --theme-tag-hover-border-color: initial; --theme-tag-hover-color: initial; --theme-tag-required-background-color: var(--theme-secondary-500); --theme-tag-required-border-color: transparent; --theme-tag-required-color: var(--white); --theme-tag-required-hover-background-color: var(--theme-secondary-400); --theme-tag-required-hover-border-color: transparent; --theme-tag-required-hover-color: var(--white); --theme-topbar-bottom-border: 1px solid var(--black-225); border-radius: 0px; border: 0px; box-sizing: inherit; color: var(--black-600); font-family: var(--ff-mono); font-feature-settings: inherit; font-kerning: inherit; font-optical-sizing: inherit; font-size: var(--_pr-code-fs); font-stretch: inherit; font-style: inherit; font-variant: inherit; font-variation-settings: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;">ansible-galaxy collection install git+</code>https://github.com/prometheus-community/ansible.git</pre><pre style="--theme-background-attachment: auto; --theme-background-color: var(--white); --theme-background-position: top left; --theme-background-repeat: repeat; --theme-background-size: auto; --theme-base-primary-color-h: 27; --theme-base-primary-color-l: 48%; --theme-base-primary-color-s: 89%; --theme-body-font-color: var(--black-600); --theme-body-font-family: var(--ff-sans); --theme-button-active-background-color: initial; --theme-button-color: initial; --theme-button-hover-background-color: initial; --theme-button-hover-color: initial; --theme-button-outlined-border-color: initial; --theme-button-outlined-selected-border-color: initial; --theme-button-primary-active-background-color: initial; --theme-button-primary-active-color: initial; --theme-button-primary-background-color: initial; --theme-button-primary-color: initial; --theme-button-primary-hover-background-color: initial; --theme-button-primary-hover-color: initial; --theme-button-primary-selected-background-color: initial; --theme-button-primary-selected-color: initial; --theme-button-selected-background-color: initial; --theme-button-selected-color: initial; --theme-content-background-color: var(--white); --theme-content-border-color: var(--black-225); --theme-footer-background-border-top: 0; --theme-footer-background-color: hsl(210,8%,5%); --theme-footer-background-position: top left; --theme-footer-background-repeat: no-repeat; --theme-footer-background-size: auto; --theme-footer-divider-color: var(--black-500); --theme-footer-link-color-hover: var(--black-200); --theme-footer-link-color: var(--black-300); --theme-footer-padding-bottom: 0; --theme-footer-padding-top: 0; --theme-footer-text-color: var(--black-300); --theme-footer-title-color: var(--black-250); --theme-header-background-border-bottom: 0; --theme-header-background-color: var(--theme-primary); --theme-header-background-position: center left; --theme-header-background-repeat: repeat; --theme-header-background-size: auto; --theme-header-foreground-color: transparent; --theme-header-foreground-position: bottom right; --theme-header-foreground-repeat: no-repeat; --theme-header-foreground-size: auto; --theme-header-link-color: var(--theme-primary); --theme-header-sponsored-color: hsla(0,0%,100%,0.4); --theme-link-color-hover: initial; --theme-link-color-visited: initial; --theme-link-color: initial; --theme-post-body-font-family: var(--ff-sans); --theme-post-owner-background-color: var(--theme-secondary-100); --theme-post-owner-new-background-color: var(--theme-secondary-200); --theme-post-title-color-hover: var(--theme-link-color-hover); --theme-post-title-color-visited: var(--theme-link-color-visited); --theme-post-title-color: var(--theme-link-color); --theme-post-title-font-family: var(--ff-sans); --theme-primary-custom-100: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .9))); --theme-primary-custom-200: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .75))); --theme-primary-custom-300: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .5))); --theme-primary-custom-400: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), var(--theme-base-primary-color-l)); --theme-primary-custom-500: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.3))); --theme-primary-custom-600: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.6))); --theme-primary-custom: var(--theme-primary-custom-400); --theme-tag-background-color: initial; --theme-tag-border-color: initial; --theme-tag-color: initial; --theme-tag-hover-background-color: initial; --theme-tag-hover-border-color: initial; --theme-tag-hover-color: initial; --theme-tag-required-background-color: var(--theme-secondary-500); --theme-tag-required-border-color: transparent; --theme-tag-required-color: var(--white); --theme-tag-required-hover-background-color: var(--theme-secondary-400); --theme-tag-required-hover-border-color: transparent; --theme-tag-required-hover-color: var(--white); --theme-topbar-bottom-border: 1px solid var(--black-225); border-radius: var(--br-md); border: 0px; box-sizing: inherit; color: #0c0d0e; font-family: var(--ff-mono); font-feature-settings: inherit; font-kerning: inherit; font-optical-sizing: inherit; font-size: var(--fs-body1); font-stretch: inherit; font-variant-alternates: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-variant-position: inherit; font-variation-settings: inherit; line-height: var(--lh-md); margin-bottom: calc(1.5em); margin-top: 0px; max-height: 600px; overflow-wrap: normal; overflow: auto; padding: var(--su12); vertical-align: baseline; width: auto;">(внимание на git+, без него скажет "нет тар файла")</pre><pre style="--theme-background-attachment: auto; --theme-background-color: var(--white); --theme-background-position: top left; --theme-background-repeat: repeat; --theme-background-size: auto; --theme-base-primary-color-h: 27; --theme-base-primary-color-l: 48%; --theme-base-primary-color-s: 89%; --theme-body-font-color: var(--black-600); --theme-body-font-family: var(--ff-sans); --theme-button-active-background-color: initial; --theme-button-color: initial; --theme-button-hover-background-color: initial; --theme-button-hover-color: initial; --theme-button-outlined-border-color: initial; --theme-button-outlined-selected-border-color: initial; --theme-button-primary-active-background-color: initial; --theme-button-primary-active-color: initial; --theme-button-primary-background-color: initial; --theme-button-primary-color: initial; --theme-button-primary-hover-background-color: initial; --theme-button-primary-hover-color: initial; --theme-button-primary-selected-background-color: initial; --theme-button-primary-selected-color: initial; --theme-button-selected-background-color: initial; --theme-button-selected-color: initial; --theme-content-background-color: var(--white); --theme-content-border-color: var(--black-225); --theme-footer-background-border-top: 0; --theme-footer-background-color: hsl(210,8%,5%); --theme-footer-background-position: top left; --theme-footer-background-repeat: no-repeat; --theme-footer-background-size: auto; --theme-footer-divider-color: var(--black-500); --theme-footer-link-color-hover: var(--black-200); --theme-footer-link-color: var(--black-300); --theme-footer-padding-bottom: 0; --theme-footer-padding-top: 0; --theme-footer-text-color: var(--black-300); --theme-footer-title-color: var(--black-250); --theme-header-background-border-bottom: 0; --theme-header-background-color: var(--theme-primary); --theme-header-background-position: center left; --theme-header-background-repeat: repeat; --theme-header-background-size: auto; --theme-header-foreground-color: transparent; --theme-header-foreground-position: bottom right; --theme-header-foreground-repeat: no-repeat; --theme-header-foreground-size: auto; --theme-header-link-color: var(--theme-primary); --theme-header-sponsored-color: hsla(0,0%,100%,0.4); --theme-link-color-hover: initial; --theme-link-color-visited: initial; --theme-link-color: initial; --theme-post-body-font-family: var(--ff-sans); --theme-post-owner-background-color: var(--theme-secondary-100); --theme-post-owner-new-background-color: var(--theme-secondary-200); --theme-post-title-color-hover: var(--theme-link-color-hover); --theme-post-title-color-visited: var(--theme-link-color-visited); --theme-post-title-color: var(--theme-link-color); --theme-post-title-font-family: var(--ff-sans); --theme-primary-custom-100: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .9))); --theme-primary-custom-200: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .75))); --theme-primary-custom-300: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .5))); --theme-primary-custom-400: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), var(--theme-base-primary-color-l)); --theme-primary-custom-500: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.3))); --theme-primary-custom-600: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.6))); --theme-primary-custom: var(--theme-primary-custom-400); --theme-tag-background-color: initial; --theme-tag-border-color: initial; --theme-tag-color: initial; --theme-tag-hover-background-color: initial; --theme-tag-hover-border-color: initial; --theme-tag-hover-color: initial; --theme-tag-required-background-color: var(--theme-secondary-500); --theme-tag-required-border-color: transparent; --theme-tag-required-color: var(--white); --theme-tag-required-hover-background-color: var(--theme-secondary-400); --theme-tag-required-hover-border-color: transparent; --theme-tag-required-hover-color: var(--white); --theme-topbar-bottom-border: 1px solid var(--black-225); border-radius: var(--br-md); border: 0px; box-sizing: inherit; color: #0c0d0e; font-family: var(--ff-mono); font-feature-settings: inherit; font-kerning: inherit; font-optical-sizing: inherit; font-size: var(--fs-body1); font-stretch: inherit; font-variant-alternates: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-variant-position: inherit; font-variation-settings: inherit; line-height: var(--lh-md); margin-bottom: calc(1.5em); margin-top: 0px; max-height: 600px; overflow-wrap: normal; overflow: auto; padding: var(--su12); vertical-align: baseline; width: auto;">Можно сделать requirements.yaml</pre><pre style="--theme-background-attachment: auto; --theme-background-color: var(--white); --theme-background-position: top left; --theme-background-repeat: repeat; --theme-background-size: auto; --theme-base-primary-color-h: 27; --theme-base-primary-color-l: 48%; --theme-base-primary-color-s: 89%; --theme-body-font-color: var(--black-600); --theme-body-font-family: var(--ff-sans); --theme-button-active-background-color: initial; --theme-button-color: initial; --theme-button-hover-background-color: initial; --theme-button-hover-color: initial; --theme-button-outlined-border-color: initial; --theme-button-outlined-selected-border-color: initial; --theme-button-primary-active-background-color: initial; --theme-button-primary-active-color: initial; --theme-button-primary-background-color: initial; --theme-button-primary-color: initial; --theme-button-primary-hover-background-color: initial; --theme-button-primary-hover-color: initial; --theme-button-primary-selected-background-color: initial; --theme-button-primary-selected-color: initial; --theme-button-selected-background-color: initial; --theme-button-selected-color: initial; --theme-content-background-color: var(--white); --theme-content-border-color: var(--black-225); --theme-footer-background-border-top: 0; --theme-footer-background-color: hsl(210,8%,5%); --theme-footer-background-position: top left; --theme-footer-background-repeat: no-repeat; --theme-footer-background-size: auto; --theme-footer-divider-color: var(--black-500); --theme-footer-link-color-hover: var(--black-200); --theme-footer-link-color: var(--black-300); --theme-footer-padding-bottom: 0; --theme-footer-padding-top: 0; --theme-footer-text-color: var(--black-300); --theme-footer-title-color: var(--black-250); --theme-header-background-border-bottom: 0; --theme-header-background-color: var(--theme-primary); --theme-header-background-position: center left; --theme-header-background-repeat: repeat; --theme-header-background-size: auto; --theme-header-foreground-color: transparent; --theme-header-foreground-position: bottom right; --theme-header-foreground-repeat: no-repeat; --theme-header-foreground-size: auto; --theme-header-link-color: var(--theme-primary); --theme-header-sponsored-color: hsla(0,0%,100%,0.4); --theme-link-color-hover: initial; --theme-link-color-visited: initial; --theme-link-color: initial; --theme-post-body-font-family: var(--ff-sans); --theme-post-owner-background-color: var(--theme-secondary-100); --theme-post-owner-new-background-color: var(--theme-secondary-200); --theme-post-title-color-hover: var(--theme-link-color-hover); --theme-post-title-color-visited: var(--theme-link-color-visited); --theme-post-title-color: var(--theme-link-color); --theme-post-title-font-family: var(--ff-sans); --theme-primary-custom-100: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .9))); --theme-primary-custom-200: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .75))); --theme-primary-custom-300: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .5))); --theme-primary-custom-400: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), var(--theme-base-primary-color-l)); --theme-primary-custom-500: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.3))); --theme-primary-custom-600: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.6))); --theme-primary-custom: var(--theme-primary-custom-400); --theme-tag-background-color: initial; --theme-tag-border-color: initial; --theme-tag-color: initial; --theme-tag-hover-background-color: initial; --theme-tag-hover-border-color: initial; --theme-tag-hover-color: initial; --theme-tag-required-background-color: var(--theme-secondary-500); --theme-tag-required-border-color: transparent; --theme-tag-required-color: var(--white); --theme-tag-required-hover-background-color: var(--theme-secondary-400); --theme-tag-required-hover-border-color: transparent; --theme-tag-required-hover-color: var(--white); --theme-topbar-bottom-border: 1px solid var(--black-225); border-radius: var(--br-md); border: 0px; box-sizing: inherit; color: #0c0d0e; font-family: var(--ff-mono); font-feature-settings: inherit; font-kerning: inherit; font-optical-sizing: inherit; font-size: var(--fs-body1); font-stretch: inherit; font-variant-alternates: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-variant-position: inherit; font-variation-settings: inherit; line-height: var(--lh-md); margin-bottom: calc(1.5em); margin-top: 0px; max-height: 600px; overflow-wrap: normal; overflow: auto; padding: var(--su12); vertical-align: baseline; width: auto;"><pre style="--theme-background-attachment: auto; --theme-background-color: var(--white); --theme-background-position: top left; --theme-background-repeat: repeat; --theme-background-size: auto; --theme-base-primary-color-h: 27; --theme-base-primary-color-l: 48%; --theme-base-primary-color-s: 89%; --theme-body-font-color: var(--black-600); --theme-body-font-family: var(--ff-sans); --theme-button-active-background-color: initial; --theme-button-color: initial; --theme-button-hover-background-color: initial; --theme-button-hover-color: initial; --theme-button-outlined-border-color: initial; --theme-button-outlined-selected-border-color: initial; --theme-button-primary-active-background-color: initial; --theme-button-primary-active-color: initial; --theme-button-primary-background-color: initial; --theme-button-primary-color: initial; --theme-button-primary-hover-background-color: initial; --theme-button-primary-hover-color: initial; --theme-button-primary-selected-background-color: initial; --theme-button-primary-selected-color: initial; --theme-button-selected-background-color: initial; --theme-button-selected-color: initial; --theme-content-background-color: var(--white); --theme-content-border-color: var(--black-225); --theme-footer-background-border-top: 0; --theme-footer-background-color: hsl(210,8%,5%); --theme-footer-background-position: top left; --theme-footer-background-repeat: no-repeat; --theme-footer-background-size: auto; --theme-footer-divider-color: var(--black-500); --theme-footer-link-color-hover: var(--black-200); --theme-footer-link-color: var(--black-300); --theme-footer-padding-bottom: 0; --theme-footer-padding-top: 0; --theme-footer-text-color: var(--black-300); --theme-footer-title-color: var(--black-250); --theme-header-background-border-bottom: 0; --theme-header-background-color: var(--theme-primary); --theme-header-background-position: center left; --theme-header-background-repeat: repeat; --theme-header-background-size: auto; --theme-header-foreground-color: transparent; --theme-header-foreground-position: bottom right; --theme-header-foreground-repeat: no-repeat; --theme-header-foreground-size: auto; --theme-header-link-color: var(--theme-primary); --theme-header-sponsored-color: hsla(0,0%,100%,0.4); --theme-link-color-hover: initial; --theme-link-color-visited: initial; --theme-link-color: initial; --theme-post-body-font-family: var(--ff-sans); --theme-post-owner-background-color: var(--theme-secondary-100); --theme-post-owner-new-background-color: var(--theme-secondary-200); --theme-post-title-color-hover: var(--theme-link-color-hover); --theme-post-title-color-visited: var(--theme-link-color-visited); --theme-post-title-color: var(--theme-link-color); --theme-post-title-font-family: var(--ff-sans); --theme-primary-custom-100: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .9))); --theme-primary-custom-200: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .75))); --theme-primary-custom-300: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .5))); --theme-primary-custom-400: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), var(--theme-base-primary-color-l)); --theme-primary-custom-500: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.3))); --theme-primary-custom-600: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.6))); --theme-primary-custom: var(--theme-primary-custom-400); --theme-tag-background-color: initial; --theme-tag-border-color: initial; --theme-tag-color: initial; --theme-tag-hover-background-color: initial; --theme-tag-hover-border-color: initial; --theme-tag-hover-color: initial; --theme-tag-required-background-color: var(--theme-secondary-500); --theme-tag-required-border-color: transparent; --theme-tag-required-color: var(--white); --theme-tag-required-hover-background-color: var(--theme-secondary-400); --theme-tag-required-hover-border-color: transparent; --theme-tag-required-hover-color: var(--white); --theme-topbar-bottom-border: 1px solid var(--black-225); border-radius: var(--br-md); border: 0px; box-sizing: inherit; font-family: var(--ff-mono); font-feature-settings: inherit; font-kerning: inherit; font-optical-sizing: inherit; font-size: var(--fs-body1); font-stretch: inherit; font-variant-alternates: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-variant-position: inherit; font-variation-settings: inherit; line-height: var(--lh-md); margin-bottom: 0px; margin-top: 0px; max-height: 600px; overflow-wrap: normal; overflow: auto; padding: var(--su12); vertical-align: baseline; width: auto;"><code style="--theme-background-attachment: auto; --theme-background-color: var(--white); --theme-background-position: top left; --theme-background-repeat: repeat; --theme-background-size: auto; --theme-base-primary-color-h: 27; --theme-base-primary-color-l: 48%; --theme-base-primary-color-s: 89%; --theme-body-font-color: var(--black-600); --theme-body-font-family: var(--ff-sans); --theme-button-active-background-color: initial; --theme-button-color: initial; --theme-button-hover-background-color: initial; --theme-button-hover-color: initial; --theme-button-outlined-border-color: initial; --theme-button-outlined-selected-border-color: initial; --theme-button-primary-active-background-color: initial; --theme-button-primary-active-color: initial; --theme-button-primary-background-color: initial; --theme-button-primary-color: initial; --theme-button-primary-hover-background-color: initial; --theme-button-primary-hover-color: initial; --theme-button-primary-selected-background-color: initial; --theme-button-primary-selected-color: initial; --theme-button-selected-background-color: initial; --theme-button-selected-color: initial; --theme-content-background-color: var(--white); --theme-content-border-color: var(--black-225); --theme-footer-background-border-top: 0; --theme-footer-background-color: hsl(210,8%,5%); --theme-footer-background-position: top left; --theme-footer-background-repeat: no-repeat; --theme-footer-background-size: auto; --theme-footer-divider-color: var(--black-500); --theme-footer-link-color-hover: var(--black-200); --theme-footer-link-color: var(--black-300); --theme-footer-padding-bottom: 0; --theme-footer-padding-top: 0; --theme-footer-text-color: var(--black-300); --theme-footer-title-color: var(--black-250); --theme-header-background-border-bottom: 0; --theme-header-background-color: var(--theme-primary); --theme-header-background-position: center left; --theme-header-background-repeat: repeat; --theme-header-background-size: auto; --theme-header-foreground-color: transparent; --theme-header-foreground-position: bottom right; --theme-header-foreground-repeat: no-repeat; --theme-header-foreground-size: auto; --theme-header-link-color: var(--theme-primary); --theme-header-sponsored-color: hsla(0,0%,100%,0.4); --theme-link-color-hover: initial; --theme-link-color-visited: initial; --theme-link-color: initial; --theme-post-body-font-family: var(--ff-sans); --theme-post-owner-background-color: var(--theme-secondary-100); --theme-post-owner-new-background-color: var(--theme-secondary-200); --theme-post-title-color-hover: var(--theme-link-color-hover); --theme-post-title-color-visited: var(--theme-link-color-visited); --theme-post-title-color: var(--theme-link-color); --theme-post-title-font-family: var(--ff-sans); --theme-primary-custom-100: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .9))); --theme-primary-custom-200: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .75))); --theme-primary-custom-300: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .5))); --theme-primary-custom-400: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), var(--theme-base-primary-color-l)); --theme-primary-custom-500: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.3))); --theme-primary-custom-600: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.6))); --theme-primary-custom: var(--theme-primary-custom-400); --theme-tag-background-color: initial; --theme-tag-border-color: initial; --theme-tag-color: initial; --theme-tag-hover-background-color: initial; --theme-tag-hover-border-color: initial; --theme-tag-hover-color: initial; --theme-tag-required-background-color: var(--theme-secondary-500); --theme-tag-required-border-color: transparent; --theme-tag-required-color: var(--white); --theme-tag-required-hover-background-color: var(--theme-secondary-400); --theme-tag-required-hover-border-color: transparent; --theme-tag-required-hover-color: var(--white); --theme-topbar-bottom-border: 1px solid var(--black-225); border-radius: 0px; border: 0px; box-sizing: inherit; color: var(--black-600); font-family: var(--ff-mono); font-feature-settings: inherit; font-kerning: inherit; font-optical-sizing: inherit; font-size: var(--_pr-code-fs); font-stretch: inherit; font-style: inherit; font-variant: inherit; font-variation-settings: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;">collections:
- name: git@github.com:my_org/private_collections.git#/path/to/collection,devel
- name: https://github.com/ansible-collections/amazon.aws.git
type: git
version: 8102847014fd6e7a3233df9ea998ef4677b99248</code></pre></pre><pre style="--theme-background-attachment: auto; --theme-background-color: var(--white); --theme-background-position: top left; --theme-background-repeat: repeat; --theme-background-size: auto; --theme-base-primary-color-h: 27; --theme-base-primary-color-l: 48%; --theme-base-primary-color-s: 89%; --theme-body-font-color: var(--black-600); --theme-body-font-family: var(--ff-sans); --theme-button-active-background-color: initial; --theme-button-color: initial; --theme-button-hover-background-color: initial; --theme-button-hover-color: initial; --theme-button-outlined-border-color: initial; --theme-button-outlined-selected-border-color: initial; --theme-button-primary-active-background-color: initial; --theme-button-primary-active-color: initial; --theme-button-primary-background-color: initial; --theme-button-primary-color: initial; --theme-button-primary-hover-background-color: initial; --theme-button-primary-hover-color: initial; --theme-button-primary-selected-background-color: initial; --theme-button-primary-selected-color: initial; --theme-button-selected-background-color: initial; --theme-button-selected-color: initial; --theme-content-background-color: var(--white); --theme-content-border-color: var(--black-225); --theme-footer-background-border-top: 0; --theme-footer-background-color: hsl(210,8%,5%); --theme-footer-background-position: top left; --theme-footer-background-repeat: no-repeat; --theme-footer-background-size: auto; --theme-footer-divider-color: var(--black-500); --theme-footer-link-color-hover: var(--black-200); --theme-footer-link-color: var(--black-300); --theme-footer-padding-bottom: 0; --theme-footer-padding-top: 0; --theme-footer-text-color: var(--black-300); --theme-footer-title-color: var(--black-250); --theme-header-background-border-bottom: 0; --theme-header-background-color: var(--theme-primary); --theme-header-background-position: center left; --theme-header-background-repeat: repeat; --theme-header-background-size: auto; --theme-header-foreground-color: transparent; --theme-header-foreground-position: bottom right; --theme-header-foreground-repeat: no-repeat; --theme-header-foreground-size: auto; --theme-header-link-color: var(--theme-primary); --theme-header-sponsored-color: hsla(0,0%,100%,0.4); --theme-link-color-hover: initial; --theme-link-color-visited: initial; --theme-link-color: initial; --theme-post-body-font-family: var(--ff-sans); --theme-post-owner-background-color: var(--theme-secondary-100); --theme-post-owner-new-background-color: var(--theme-secondary-200); --theme-post-title-color-hover: var(--theme-link-color-hover); --theme-post-title-color-visited: var(--theme-link-color-visited); --theme-post-title-color: var(--theme-link-color); --theme-post-title-font-family: var(--ff-sans); --theme-primary-custom-100: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .9))); --theme-primary-custom-200: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .75))); --theme-primary-custom-300: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .5))); --theme-primary-custom-400: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), var(--theme-base-primary-color-l)); --theme-primary-custom-500: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.3))); --theme-primary-custom-600: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.6))); --theme-primary-custom: var(--theme-primary-custom-400); --theme-tag-background-color: initial; --theme-tag-border-color: initial; --theme-tag-color: initial; --theme-tag-hover-background-color: initial; --theme-tag-hover-border-color: initial; --theme-tag-hover-color: initial; --theme-tag-required-background-color: var(--theme-secondary-500); --theme-tag-required-border-color: transparent; --theme-tag-required-color: var(--white); --theme-tag-required-hover-background-color: var(--theme-secondary-400); --theme-tag-required-hover-border-color: transparent; --theme-tag-required-hover-color: var(--white); --theme-topbar-bottom-border: 1px solid var(--black-225); border-radius: var(--br-md); border: 0px; box-sizing: inherit; color: #0c0d0e; font-family: var(--ff-mono); font-feature-settings: inherit; font-kerning: inherit; font-optical-sizing: inherit; font-size: var(--fs-body1); font-stretch: inherit; font-variant-alternates: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-variant-position: inherit; font-variation-settings: inherit; line-height: var(--lh-md); margin-bottom: calc(1.5em); margin-top: 0px; max-height: 600px; overflow-wrap: normal; overflow: auto; padding: var(--su12); vertical-align: baseline; width: auto;">Тут есть ещё документация</pre><pre style="--theme-background-attachment: auto; --theme-background-color: var(--white); --theme-background-position: top left; --theme-background-repeat: repeat; --theme-background-size: auto; --theme-base-primary-color-h: 27; --theme-base-primary-color-l: 48%; --theme-base-primary-color-s: 89%; --theme-body-font-color: var(--black-600); --theme-body-font-family: var(--ff-sans); --theme-button-active-background-color: initial; --theme-button-color: initial; --theme-button-hover-background-color: initial; --theme-button-hover-color: initial; --theme-button-outlined-border-color: initial; --theme-button-outlined-selected-border-color: initial; --theme-button-primary-active-background-color: initial; --theme-button-primary-active-color: initial; --theme-button-primary-background-color: initial; --theme-button-primary-color: initial; --theme-button-primary-hover-background-color: initial; --theme-button-primary-hover-color: initial; --theme-button-primary-selected-background-color: initial; --theme-button-primary-selected-color: initial; --theme-button-selected-background-color: initial; --theme-button-selected-color: initial; --theme-content-background-color: var(--white); --theme-content-border-color: var(--black-225); --theme-footer-background-border-top: 0; --theme-footer-background-color: hsl(210,8%,5%); --theme-footer-background-position: top left; --theme-footer-background-repeat: no-repeat; --theme-footer-background-size: auto; --theme-footer-divider-color: var(--black-500); --theme-footer-link-color-hover: var(--black-200); --theme-footer-link-color: var(--black-300); --theme-footer-padding-bottom: 0; --theme-footer-padding-top: 0; --theme-footer-text-color: var(--black-300); --theme-footer-title-color: var(--black-250); --theme-header-background-border-bottom: 0; --theme-header-background-color: var(--theme-primary); --theme-header-background-position: center left; --theme-header-background-repeat: repeat; --theme-header-background-size: auto; --theme-header-foreground-color: transparent; --theme-header-foreground-position: bottom right; --theme-header-foreground-repeat: no-repeat; --theme-header-foreground-size: auto; --theme-header-link-color: var(--theme-primary); --theme-header-sponsored-color: hsla(0,0%,100%,0.4); --theme-link-color-hover: initial; --theme-link-color-visited: initial; --theme-link-color: initial; --theme-post-body-font-family: var(--ff-sans); --theme-post-owner-background-color: var(--theme-secondary-100); --theme-post-owner-new-background-color: var(--theme-secondary-200); --theme-post-title-color-hover: var(--theme-link-color-hover); --theme-post-title-color-visited: var(--theme-link-color-visited); --theme-post-title-color: var(--theme-link-color); --theme-post-title-font-family: var(--ff-sans); --theme-primary-custom-100: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .9))); --theme-primary-custom-200: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .75))); --theme-primary-custom-300: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .5))); --theme-primary-custom-400: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), var(--theme-base-primary-color-l)); --theme-primary-custom-500: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.3))); --theme-primary-custom-600: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.6))); --theme-primary-custom: var(--theme-primary-custom-400); --theme-tag-background-color: initial; --theme-tag-border-color: initial; --theme-tag-color: initial; --theme-tag-hover-background-color: initial; --theme-tag-hover-border-color: initial; --theme-tag-hover-color: initial; --theme-tag-required-background-color: var(--theme-secondary-500); --theme-tag-required-border-color: transparent; --theme-tag-required-color: var(--white); --theme-tag-required-hover-background-color: var(--theme-secondary-400); --theme-tag-required-hover-border-color: transparent; --theme-tag-required-hover-color: var(--white); --theme-topbar-bottom-border: 1px solid var(--black-225); border-radius: var(--br-md); border: 0px; box-sizing: inherit; font-feature-settings: inherit; font-kerning: inherit; font-optical-sizing: inherit; font-stretch: inherit; font-variant-alternates: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-variant-position: inherit; font-variation-settings: inherit; line-height: var(--lh-md); margin-bottom: calc(1.5em); margin-top: 0px; max-height: 600px; overflow-wrap: normal; overflow: auto; padding: var(--su12); vertical-align: baseline; width: auto;"><span style="color: #0c0d0e; font-family: Times New Roman;"><a href="https://docs.ansible.com/ansible/latest/collections_guide/collections_installing.html">https://docs.ansible.com/ansible/latest/collections_guide/collections_installing.html</a></span></pre>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-22974973359333928052024-01-31T17:39:00.003+03:002024-01-31T17:39:50.753+03:00Добавление внешних айпи к интерфейсам<p> Например, можно у ovh докупить адресов, но подключать их надо правильно, а для дебиана и убунты методы отличаются кардинально.</p><p><a href="https://help.ovhcloud.com/csm/en-dedicated-servers-network-ipaliasing?id=kb_article_view&sysparm_article=KB0043756#instructions">https://help.ovhcloud.com/csm/en-dedicated-servers-network-ipaliasing?id=kb_article_view&sysparm_article=KB0043756#instructions</a></p><p>В частности, у дебиана правится</p><p>/etc/network/interfaces.d/50-cloud-init</p><p>а у убунты</p><p>/etc/netplan/50-cloud-init.yaml</p>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-8274258016374583962024-01-30T23:38:00.002+03:002024-01-31T01:38:09.964+03:00haproxy monitoring<p> У haproxy есть как уже написанные <a href="https://github.com/prometheus/haproxy_exporter" target="_blank">экспортеры</a> (archived!), так и штатный экспорт в прометей, штатным и воспользуемся:</p><p>frontend prometheus</p><p> bind *:8405</p><p> mode http</p><p> http-request use-service prometheus-exporter if { path /metrics }</p><p>А вот с графаной печальнее, есть больше десятка dashboars, но из проверенных (не всех) рабочим оказался только <a href="https://grafana.com/grafana/dashboards/12693-haproxy-2-full/" target="_blank">HAProxy 2 Full</a> (id: 12693)</p><p>Ну и всё, теперь добавляем в прометей</p><p> - job_name: haproxy</p><p> metrics_path: /metrics</p><p> scrape_interval: 20s</p><p> static_configs:</p><p> - targets:</p><p> - '1.1.1.1:8405'</p><p> - '2.2.2.2:8405'</p><p>и радуемся...</p><p><br /></p>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-16094654048720112372024-01-18T01:57:00.002+03:002024-01-18T02:21:31.702+03:00nginx, fastcgi_pass и правильная настройка<p> Если работаем через сокет, какой блок часто можно встретить?</p><p> location ~ \.php$ {</p><p> fastcgi_pass unix:/var/run/php-docker/php8.2-fpm.sock;</p><p> fastcgi_index index.php;</p><p> fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;</p><p> include fastcgi_params;</p><p> }</p><p>Но есть нюанс: $realpath_root в данном случае сломан, вероятно потому что там должен быть реальный путь, но там пусто, файлы же в докере.. </p><p><a href="https://nginx.org/en/docs/http/ngx_http_core_module.html#variables">https://nginx.org/en/docs/http/ngx_http_core_module.html#variables</a></p><p>$realpath_root</p><p>an absolute pathname corresponding to the root or alias directive’s value for the current request, with all symbolic links resolved to real paths</p><p>Вариант - вписывать туда путь явно или через вспомогательную переменную. Хотя с $document_root тоже работает, если где-то выше выставлен root</p><p>fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;</p><p>Но читаемость всё-равно будет не очень: всё-таки ожидается, что root локальный. Можно придумать свою переменную типа</p><p>set $root_in_docker /srv/.../ ;</p><p>и потом </p><p>fastcgi_param SCRIPT_FILENAME $root_in_docker$fastcgi_script_name;</p><p>только не забыть потом</p><p>root $root_in_docker;</p><p>а то показывает дефолтную nginx страницу. Хотя и так не очень правильно, но - работает</p>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-78149176986964182092024-01-17T17:10:00.005+03:002024-01-17T17:12:13.907+03:00Configuration error - kwargs_from_env() got an unexpected keyword argument 'ssl_version'<p> При деплое (у меня ansible + docker compose) можно поймать ошибку из заголовка, причина проста: пип версия 7.0.0 пакета docker - битая, но всем класть.</p><p>Фикс - явно пишем версию docker==6.1.3</p><p><a href="https://github.com/geerlingguy/internet-pi/issues/567">https://github.com/geerlingguy/internet-pi/issues/567</a></p><p><a href="https://github.com/docker/docker-py/issues/3194">https://github.com/docker/docker-py/issues/3194</a></p>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-32438712816056591472024-01-06T00:24:00.003+03:002024-01-12T05:51:26.952+03:00Lens умер, привет openlens?<p> Суть: ранее для запуска программы нужен был Lens ID, но его можно было получить через гитхаб или gmail. Теперь не пускает с этими привязками.</p><p>И если под 5 версию был обход</p><p>127.0.0.1 app.k8slens.dev</p><div>то 6 можно только закопать.</div><div><br /></div><div>Аналоги?<br />Например <a href="https://k9scli.io/" target="_blank">k9s</a></div><div>https://github.com/derailed/k9s/releases</div><div>https://github.com/derailed/k9s/releases/download/v0.30.6/k9s_linux_amd64.deb</div><div>ставим пакет, запускаем (k9s), видим поды в дефолт пространстве, нажимаем 0 - покажет все поды. Далее смотреть подсказку сверху или читать инструкции на сайте.</div><div><br /></div><div>Далее.</div><div>Есть <a href="https://codeberg.org/hjacobs/kube-web-view/" target="_blank">kube-web-view</a> с <a href="https://habr.com/ru/companies/flant/articles/468041/" target="_blank">обзором</a> (там же можно посмотреть ещё с десяток вариантов, учитывая что статье 5 лет уже). Более <a href="https://habr.com/ru/companies/flant/articles/506948/" target="_blank">свежая подборка</a> (4 года)</div><div><br /></div><div><a href="https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/" target="_blank">Kubernetes Dashboard</a></div><div>Очень популярный веб интерфейс.</div><div><br /></div><div><a href="https://github.com/openshift/console" target="_blank">openshift-console</a>: говорят, работает не только с шифтом, но и с обычным кубером. Не проверялось.</div><div><br /></div><div>А также есть приколы типа <a href="https://kubenav.io/" target="_blank">https://kubenav.io/</a> под мобилки..</div><div><br /></div><div>Но. Есть "форк", <a href="https://github.com/MuhammedKalkan/OpenLens/releases" target="_blank">openlens</a> (линк странный, проверить, и гуглить openlens)</div>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-79399446575274705842024-01-04T17:27:00.002+03:002024-01-04T17:27:16.938+03:00доступ к сайтам с paywall<p> По разным причинам не всегда есть возможность получить доступ к 1 статье, которая "заплатите чтобы читать дальше", включая жадность авторов. Но есть полезный плагин</p><p><a href="https://gitlab.com/magnolia1234/bypass-paywalls-chrome-clean" target="_blank">https://gitlab.com/magnolia1234/bypass-paywalls-chrome-clean</a></p>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-53882432627191971722023-12-31T05:24:00.005+03:002023-12-31T05:27:14.725+03:00centos+vfat?<p> Иногда вдруг может понадобиться в центоси fat32, он же vfat</p><p>yum whatprovides mkfs.vfat</p><div>yum install dosfstools</div><div><br /></div><div>Нюанс: раздел может потребоваться переключить из linux для корректной работы:</div><div><a href="https://bozza.ru/art-291.html">https://bozza.ru/art-291.html</a></div><div><br /></div><div><pre class="cons" style="background-color: black; border-radius: 6px; border: 1px solid rgb(204, 204, 204); color: white; font-size: 14px; line-height: 1.5; margin-bottom: 10px !important; margin-top: 10px !important; outline: 0px; overflow-wrap: break-word; overflow: auto; padding: 10px; text-wrap: wrap; vertical-align: baseline;">Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): b
WARNING: If you have created or modified any DOS 6.xpartitions, please see the fdisk manual page for additionalinformation.
Changed type of partition 'Linux' to 'W95 FAT32'</pre></div><div><br /></div><div>сохраняем (w), форматируем и используем..</div>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-57720350619969411212023-12-23T04:08:00.002+03:002023-12-23T04:08:06.433+03:00 Если нужен впс под бэкапы<p> Если нужен впс под бэкапы</p><p>Виртуальные серверы с жестким диском от 4000 до 9000 GB, ценой до 3000 рублей и сортировкой по цене | Поиск VPS </p><p><a href="https://poiskvps.ru/index.php?search_hdd_min=4000&search_hdd_max=9000&search_price_max=3000">https://poiskvps.ru/index.php?search_hdd_min=4000&search_hdd_max=9000&search_price_max=3000</a></p>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-33217648585424361162023-12-21T22:01:00.003+03:002023-12-21T22:01:21.223+03:00введение в WSL<p> введение в WSL</p><p><a href="https://habr.com/ru/articles/481746/">Настройка окружения в CLI. WSL / Windows Terminal</a></p>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-19085499754894966462023-12-08T03:58:00.002+03:002024-03-04T03:44:23.449+03:00clickhouse+zookeeper+ansible<p><a href="https://clickhouse.com/docs/ru/getting-started/install" target="_blank">Установить кликхаус не очень сложно</a> (под докер тоже есть <a href="https://hub.docker.com/r/clickhouse/clickhouse-server/" target="_blank">официальный образ</a>), но для работы на нескольких серверах нужно ещё добавить zookeeper (уже есть версия c clickhouse keeper, но пока рекомендуется ставить)</p><p>Нюанс: сам конфиг кликхауса в убогом и давно устаревшем xml, это надо учитывать. Хотя есть и поддержка ямла, но пока 99.9% инструкций, включая офдоки, на xml</p><span><a name='more'></a></span><p>Можно взять за основу достаточно популярную роль</p><p><a href="https://galaxy.ansible.com/ui/standalone/roles/AlexeySetevoi/clickhouse/" target="_blank">https://galaxy.ansible.com/ui/standalone/roles/AlexeySetevoi/clickhouse/</a></p><p>Но данная роль использовать zookeeper может, но вот ставить - нет.</p><p>Впрочем, если нас устроит докер:</p><p><a href="https://hub.docker.com/_/zookeeper" target="_blank">https://hub.docker.com/_/zookeeper</a></p><p>При этом конфиги кладём в /conf/zoo.cfg, данные подключаем в /data</p><p>Хотя можно обойтись и без докера, другая роль:</p><p><a href="https://github.com/dpvpro/ansible-clickhouse-dp" target="_blank">https://github.com/dpvpro/ansible-clickhouse-dp</a></p><p><a href="https://daybydayz.ru/2018/02/05/%D0%B0%D0%BD%D1%81%D0%B8%D0%B1%D0%BB-%D1%80%D0%BE%D0%BB%D1%8C-%D0%B4%D0%BB%D1%8F-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8-clickhouse-%D0%B8-zookeper/" target="_blank">Ансибл роль для установки Clickhouse и Zookeper</a></p><p><br /></p><p>PS Проверка статуса по старым докам делается через</p><p>echo 'stat' | nc localhost 2181</p><p>Но сейчас будет ошибка</p><p>stat is not executed because it is not in the whitelist.</p><p>Причины и решения есть например тут:</p><p><a href="https://github.com/confluentinc/cp-docker-images/issues/827" target="_blank">https://github.com/confluentinc/cp-docker-images/issues/827</a></p><p>Быстрофикс: в docker-compose в переменные каждого инстанса добавляем (чуть доработанный докер-компоуз из _/zookeeper)</p><p>ZOO_4LW_COMMANDS_WHITELIST: '*'</p><p>и перезапускаем. Теперь можно проверить:</p><p>docker exec -ti zookeeper-zoo1-1 echo 'stat' | nc localhost 2181 | grep Mode</p><p>Можно через zhCli:</p><p>zhCli.sh -server localhost:2181 get -s</p><p><a href="https://zookeeper.apache.org/doc/r3.9.1/zookeeperTools.html#zkCli" target="_blank">https://zookeeper.apache.org/doc/r3.9.1/zookeeperTools.html#zkCli</a></p><p><a href="https://zookeeper.apache.org/doc/r3.7.0/zookeeperCLI.html" target="_blank">https://zookeeper.apache.org/doc/r3.7.0/zookeeperCLI.html</a></p><p>Но и тут можно получить ошибку</p><p> - SASL config status: Will not attempt to authenticate using SASL (unknown error)</p><p><br /></p>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-51230317614055459982023-11-23T03:31:00.008+03:002024-01-05T00:04:36.578+03:00docker, php, fpm - не работает healthcheck<p> В случае фпм нельзя сделать курл на fastcgi порт, и особенно на сокет.</p><p>На помощь приходит <a href="https://github.com/renatomefi/php-fpm-healthcheck" target="_blank">https://github.com/renatomefi/php-fpm-healthcheck</a></p><p>Хинт для убунты: вместо apk install fcgi нужно apt install libfcgi-bin</p><span><a name='more'></a></span><p>и пример проверки в docker-compose.yml (php-fpm-healthcheck кладётся в {workdir}/docker):</p><p>service:</p><p> name: aaa</p><p> healthcheck:</p><p> # check inside container</p><p> test: FCGI_CONNECT=/run/php/php8.2-fpm.sock docker/php-fpm-healthcheck || exit 1</p><p> # check every 5s with timeout 10s, set error after 5 retries</p><p> interval: 5s</p><p> timeout: 10s</p><p> retries: 5</p><p> start_period: 5s</p><div><br /></div>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-50967682132935443462023-11-12T00:02:00.006+03:002023-11-12T00:02:46.581+03:00видео по kubespray<p> вариант видео по установке</p><p><a href="https://www.youtube.com/watch?v=WFXlr0bVTAQ">Установка кластера Kubernetes с помощью Kubespray</a></p>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-6962116547146017422023-11-11T17:21:00.001+03:002023-11-11T17:21:00.138+03:00yarn<p> Есть такая утилита <a href="https://yarnpkg.com/" target="_blank">yarn</a> (<a href="https://habr.com/ru/articles/554944/" target="_blank">хабр</a> про версию 2), для nodejs</p><p> Некая замена-надстройка над npm, дающая ряд плюшек</p><span></span><span><a name='more'></a></span><p>- Рекомендован под nuxt</p><p>- асинхронный - работает быстрее</p><p>- избавляет проекты от папки node_modules в пользу файла .pnp.js (см хабр) (возможно только в версии 2)</p><p>- Есть из коробки в докер-образе nodejs, точно проверено с node:18-alpine</p><p>Пара моментов, которые вызывают вопросы.</p><p>yarn install vs yarn build</p><p>yarn install - ставит зависимости для работы</p><p>yarn build == yarn run build - запускает скрипт, который называется "build" из package.json.</p><p><a href="https://stackoverflow.com/questions/57215872/what-is-the-difference-between-yarn-build-and-yarn-install" target="_blank">https://stackoverflow.com/questions/57215872/what-is-the-difference-between-yarn-build-and-yarn-install</a></p><p><br /></p><p>Чуть больше про npm, yarn</p><p><a href="https://habr.com/ru/articles/726096/">https://habr.com/ru/articles/726096/</a></p><p>(!!! <span style="background-color: white; color: #333333; font-family: -apple-system, BlinkMacSystemFont, Arial, sans-serif; font-size: 15px;">pNPM - это protestware, его основной разработчик не придерживается принципов нейтральности,</span><a href="https://news.ycombinator.com/item?id=30921103" rel="noopener noreferrer nofollow" style="background-color: white; color: #548eaa; font-family: -apple-system, BlinkMacSystemFont, Arial, sans-serif; font-size: 15px; quotes: "«" "»"; transition: opacity 0.2s ease-in-out 0s, color 0.2s ease-in-out 0s, text-decoration 0.2s ease-in-out 0s, background-color 0.2s ease-in-out 0s, -webkit-text-decoration 0.2s ease-in-out 0s;"> а инфраструктура недоступна как минимум из РФ</a><span style="background-color: white; color: #333333; font-family: -apple-system, BlinkMacSystemFont, Arial, sans-serif; font-size: 15px;">.)</span></p><p>итого - лучше всего использовать именно yarn.</p><p>И ещё о запуске в докере:</p><p><a href="https://habr.com/ru/companies/timeweb/articles/657361/">https://habr.com/ru/companies/timeweb/articles/657361/</a></p>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-70672140012202586712023-10-31T01:08:00.005+03:002024-02-16T22:13:47.315+03:00ansible + hashicorp vault<p> Не всегда ansible vault удобен и достаточен, тогда вариант - hashicorp vault</p><p><a href="https://itdraft.ru/2021/03/26/hranim-sekrety-ansible-v-hashicorp-vault/" target="_blank">https://itdraft.ru/2021/03/26/hranim-sekrety-ansible-v-hashicorp-vault/</a></p><p>Для чтения переменных используется lookup('hashi_vault')</p><p><a href="https://docs.ansible.com/ansible/latest/collections/community/hashi_vault/index.html" target="_blank">https://docs.ansible.com/ansible/latest/collections/community/hashi_vault/index.html</a></p><p>PS переход с прошлой версии hashi_vault lookup</p><p><a href="https://docs.ansible.com/ansible/latest/collections/community/hashi_vault/docsite/migration_hashi_vault_lookup.html#ansible-collections-community-hashi-vault-docsite-migration-hashi-vault-lookup">https://docs.ansible.com/ansible/latest/collections/community/hashi_vault/docsite/migration_hashi_vault_lookup.html#ansible-collections-community-hashi-vault-docsite-migration-hashi-vault-lookup</a></p>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-26148717797118352462023-10-28T16:41:00.001+03:002023-10-28T16:41:03.651+03:00обновление debian 10->11 - ошибка<p> заменяем sources.list </p><p>The following packages have unmet dependencies:</p><p> libc6-dev : Breaks: libgcc-8-dev (< 8.4.0-2~) </p><p>but 8.3.0-6+rpi1 is to be installed</p><p>Нужно:</p><p>sudo apt update</p><p>sudo apt install libgcc-8-dev gcc-8-base</p><div><div>sudo apt full-upgrade</div></div><div><br /></div><div><a href="https://forums.raspberrypi.com/viewtopic.php?t=323279">https://forums.raspberrypi.com/viewtopic.php?t=323279</a></div><div><br /></div><div>И возможно - надо не пропустить ещё блок</div><div><span style="background-color: white; color: #555555; font-family: Roboto, Arial, Helvetica, sans-serif; font-size: 14.3px;">When it completes, edit /boot/config.txt.</span><br style="background-color: white; border: none; box-sizing: border-box; color: #555555; font-family: Roboto, Arial, Helvetica, sans-serif; font-size: 14.3px; margin: 0px; padding: 0px;" /><span style="background-color: white; color: #555555; font-family: Roboto, Arial, Helvetica, sans-serif; font-size: 14.3px;">Comment out any lines which contain "dtoverlay=vc4-fkms-v3d" by putting a # sign at the start of the line.</span><br style="background-color: white; border: none; box-sizing: border-box; color: #555555; font-family: Roboto, Arial, Helvetica, sans-serif; font-size: 14.3px; margin: 0px; padding: 0px;" /><span style="background-color: white; color: #555555; font-family: Roboto, Arial, Helvetica, sans-serif; font-size: 14.3px;">At the bottom of the file, in the [all] section, add the line "dtoverlay=vc4-kms-v3d" - note that is "kms", not "fkms".</span></div>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-76406185079630463392023-10-14T14:37:00.002+03:002023-10-14T14:37:21.248+03:00Отличная таблица use case-ов для Redis-а<p><a href="https://twitter.com/usehex/status/1713103929565708682?s=46&t=LJVvVaa7HhnLHdPxE-OK7g" target="_blank"> https://twitter.com/usehex/status/1713103929565708682?s=46&t=LJVvVaa7HhnLHdPxE-OK7g</a></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhwiTSZ-bkAEPs2ZAPSxyGfsDJz0Mc71iRZQ3v7cHWtLOh48C2zPtbohE4rxTHGUaAgiGrrK08erqlx47AjaWnu_sU7qTJ5Jb4XNjrK2E4O3t2z-TaR346bJ4plktUazx9JXPri-TkIIPGJFa0WV202pQEGaB24XhZqDUdp9LYQecBNw08wnH-lSQ2HBRU" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="292" data-original-width="680" height="137" src="https://blogger.googleusercontent.com/img/a/AVvXsEhwiTSZ-bkAEPs2ZAPSxyGfsDJz0Mc71iRZQ3v7cHWtLOh48C2zPtbohE4rxTHGUaAgiGrrK08erqlx47AjaWnu_sU7qTJ5Jb4XNjrK2E4O3t2z-TaR346bJ4plktUazx9JXPri-TkIIPGJFa0WV202pQEGaB24XhZqDUdp9LYQecBNw08wnH-lSQ2HBRU" width="320" /></a></div><br /><br /><p></p>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-29022621487644006062023-10-11T08:37:00.003+03:002023-10-11T08:37:58.555+03:00gitlab: Create a dynamic environment<p> <a href="https://docs.gitlab.com/ee/ci/environments/#create-a-dynamic-environment" target="_blank">https://docs.gitlab.com/ee/ci/environments/#create-a-dynamic-environment</a></p><p>Пример:</p><p><span class="na" style="background-color: #f0f0f0; box-sizing: border-box; color: #0f778a; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">deploy_review_app</span><span class="pi" style="background-color: #f0f0f0; box-sizing: border-box; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">:</span><span style="background-color: #f0f0f0; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">
</span><span class="na" style="background-color: #f0f0f0; box-sizing: border-box; color: #0f778a; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">stage</span><span class="pi" style="background-color: #f0f0f0; box-sizing: border-box; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">:</span><span style="background-color: #f0f0f0; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;"> </span><span class="s" style="background-color: #f0f0f0; box-sizing: border-box; color: #ba2121; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">deploy</span><span style="background-color: #f0f0f0; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">
</span><span class="na" style="background-color: #f0f0f0; box-sizing: border-box; color: #0f778a; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">script</span><span class="pi" style="background-color: #f0f0f0; box-sizing: border-box; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">:</span><span style="background-color: #f0f0f0; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;"> </span><span class="s" style="background-color: #f0f0f0; box-sizing: border-box; color: #ba2121; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">make deploy</span><span style="background-color: #f0f0f0; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">
</span><span class="na" style="background-color: #f0f0f0; box-sizing: border-box; color: #0f778a; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">environment</span><span class="pi" style="background-color: #f0f0f0; box-sizing: border-box; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">:</span><span style="background-color: #f0f0f0; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">
</span><span class="na" style="background-color: #f0f0f0; box-sizing: border-box; color: #0f778a; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">name</span><span class="pi" style="background-color: #f0f0f0; box-sizing: border-box; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">:</span><span style="background-color: #f0f0f0; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;"> </span><span class="s" style="background-color: #f0f0f0; box-sizing: border-box; color: #ba2121; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">review/$CI_COMMIT_REF_SLUG</span><span style="background-color: #f0f0f0; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">
</span><span class="na" style="background-color: #f0f0f0; box-sizing: border-box; color: #0f778a; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">url</span><span class="pi" style="background-color: #f0f0f0; box-sizing: border-box; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">:</span><span style="background-color: #f0f0f0; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;"> </span><span class="s" style="background-color: #f0f0f0; box-sizing: border-box; color: #ba2121; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">https://$CI_ENVIRONMENT_SLUG.example.com</span><span style="background-color: #f0f0f0; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">
</span><span class="na" style="background-color: #f0f0f0; box-sizing: border-box; color: #0f778a; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">only</span><span class="pi" style="background-color: #f0f0f0; box-sizing: border-box; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">:</span><span style="background-color: #f0f0f0; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">
</span><span class="pi" style="background-color: #f0f0f0; box-sizing: border-box; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">-</span><span style="background-color: #f0f0f0; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;"> </span><span class="s" style="background-color: #f0f0f0; box-sizing: border-box; color: #ba2121; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">branches</span><span style="background-color: #f0f0f0; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">
</span><span class="na" style="background-color: #f0f0f0; box-sizing: border-box; color: #0f778a; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">except</span><span class="pi" style="background-color: #f0f0f0; box-sizing: border-box; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">:</span><span style="background-color: #f0f0f0; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">
</span><span class="pi" style="background-color: #f0f0f0; box-sizing: border-box; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">-</span><span style="background-color: #f0f0f0; color: #404040; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;"> </span><span class="s" style="background-color: #f0f0f0; box-sizing: border-box; color: #ba2121; font-family: "GitLab Mono", "JetBrains Mono", Menlo, "DejaVu Sans Mono", "Liberation Mono", Consolas, "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-size: 14px; white-space: pre;">main</span></p><p>Зачем?</p><span><a name='more'></a></span><p>Плюсы: </p><p>- есть on_stop: в котором можно по триггеру зачищать хвосты (остановить контейнер, удалить папку, удалить деплоймент...)</p><p>- в вебе становится "красивенько"</p><p>- появляется пара дополнительных переменных</p><p>Минусы:</p><p>- вообще никак не упрощает процесс выкатки</p><p>Сразу скажу - есть переменные под конкретное окружение, но у большинства гитлаб только вызывает систему раскатки (ансибл и аналоги, хельм, верф) - и лучше описывать переменные там, с гит-контролем итд, в случае гитлаба у нас нет истории изменений.</p><p>Полуфича - с переменными гитлаба можно работать через апи, но опять же - какой смысл? </p><p>ЗЫ с on_stop надо быть аккуратнее, он вызывается в "пустом" окружении и нужно скрипт очистки или писать прямо в коде, или вытягивать из инета... этот момент нужно прорабатывать.</p>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-58392883593127716792023-10-08T21:18:00.002+03:002023-10-08T21:18:27.991+03:00"Заделываем дыры в кластере Kubernetes"<p> Интересный доклад про неочевидные "особенности"</p><p><a href="https://www.youtube.com/watch?v=bYP-JtRibAw">https://www.youtube.com/watch?v=bYP-JtRibAw</a></p>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-48107948917945463632023-10-05T06:18:00.003+03:002023-10-05T06:18:22.808+03:00WSL 1 + ubuntu 22 + vim = replace mode при открытии файла<p> Обнаружена крайне неприятная бага именно с убунтой 22.04 (проверено 18.04, 20.04 - там всё ок): открываем любой файл и он открывается сразу в режиме REPLACE. Нужно нажать esc сначала.</p><p><a href="https://github.com/microsoft/terminal/issues/1637">https://github.com/microsoft/terminal/issues/1637</a><br /></p><p>Баг заведён в 2020, воз и ныне там.</p><p>Быстрофикс: в ~/.vimrc добавить</p><pre class="notranslate" style="border-radius: 6px; box-sizing: border-box; color: #1f2328; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 11.9px; line-height: 1.45; margin-bottom: 16px; margin-top: 0px; overflow-wrap: normal; overflow: auto; padding: 16px;"><code class="notranslate" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 6px; border: 0px; box-sizing: border-box; display: inline; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; line-height: inherit; margin: 0px; overflow-wrap: normal; overflow: visible; padding: 0px; word-break: normal;">set t_u7=
# alternatively set ambw=double</code></pre>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-77115978957770070082023-09-27T23:08:00.003+03:002023-09-27T23:08:54.163+03:00pip в защищённых контурах<p> Если есть локальный прокси</p><p>python3 -m pip install --index-url http://my.package.repo/simple/ SomeProject</p><div>Если полностью изолированный контур, шагов будет больше</div><div><div>1) python -m pip download --destination-directory DIR -r requirements.txt</div></div><div>есть нюанс, читаем линк ниже, тогда:</div><div><div>python -m pip wheel --wheel-dir DIR -r requirements.txt</div></div><div><br /></div><div>2) Переносим проект и DIR на изолированную машину</div><div><div><br /></div><div>3) python -m pip install --no-index --find-links=DIR -r requirements.txt</div></div><div><br /></div><div>Есть вариант через venv, но там много нюансов, начиная с того что с машины с маком на машину с убунтой - из коробки не заработает, там в том числе разные пути в bin и конфиге.</div><div><br /></div><div><a href="https://pip.pypa.io/en/latest/user_guide/#installing-from-local-packages">https://pip.pypa.io/en/latest/user_guide/#installing-from-local-packages</a></div>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0tag:blogger.com,1999:blog-3620004242246501505.post-51073878289170253022023-09-26T17:11:00.004+03:002023-09-26T17:11:29.594+03:00apt: не очищать кэш пакетов<p> Штука древняя, но.<br />Иногда требуется принести набор пакетов в закрытый контур, делать это поштучно долго, можно поставить в подобную систему с инетом и просто взять скачанное.</p><p>Но по умолчанию дебиан удаляет пакеты (с 2016 года) после установки.</p><p>echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' \</p><p> > /etc/apt/apt.conf.d/01keep-debs</p><p>потом забирать в /var/cache/apt/...</p>playnethttp://www.blogger.com/profile/11643029562128107719noreply@blogger.com0