OpenVZ: полезные команды для работы с контейнерами

Решил собрать все в одном месте, потому что часто что-то начинаешь искать и не находишь :)
В продолжение статьи OpenVZ: полезные команды на заметку пишу дополнения!

Установить для контейнера c CTID 10 512МБ ОЗУ и 1G SWAP:

vzctl set 10 --ram 512M --swap 1G --save

Установить для контейнера с CTID 10 2 ядра CPU:

vzctl set 10 --cpus 1 --save

(далее…)

Скрипт проброса портов: OpenVZ + iptables

Один из механизмов автоматизации, когда на твоем сервере очень много OpenVZ-контейнеров с серыми IP, чаще всего им требуется не только доступ к интернет, но и проброс портов, чтобы извне заходить в сами контейнеры по SSH / FTP или любому другому протоколу, не важно. Конечно, как вариант, подходит ручная правка /etc/sysconfig/iptables и reload сервиса, но это не очень удобно и все-таки допускает «человеческий фактор», в данному случае скрипты автоматизации помогают нам.
Недавно наткнулся на интересную реализацию скрипта iptables, который смотрит запущенные контейнеры OpenVZ и автоматически пробрасывает порты на каждый контейнер, это очень удобно!

Рассмотрим его работу на примере, допустим у нас есть 3 контейнера OpenVZ:

# vzlist
      CTID      NPROC STATUS    IP_ADDR         HOSTNAME
        20         11 running   10.11.0.20      test1
        21         11 running   10.11.0.21      test2
        22         11 running   10.11.0.22      test3

Далее нам надо проверить, что у нас включен NAT на физической машине, так выглядит ситуация когда все в порядке:

# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 19 packets, 1451 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 12 packets, 947 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

(далее…)

Git push fails: RPC failed; result=22, HTTP code = 411

If you attempt to push a large set of changes to a Git repository with HTTP or HTTPS, you may get an error message such as error: RPC failed; result=22, HTTP code = 411. This is caused by a Git configuration default which limits certain HTTP operations to 1 megabyte.
To change this limit run within your local repository

git config http.postBuffer *bytes*

where bytes is the maximum number of bytes permitted. For exmaple, set 500MB:

git config http.postBuffer 524288000

If you are using gitlab, you may need to change your nginx config too (/etc/nginx/sites-available/gitlab). More info: https://github.com/gitlabhq/gitlabhq/issues/3099