Last active
March 22, 2023 03:04
-
-
Save takehaya/bf73fd782c91e040bfc09890f55be24e to your computer and use it in GitHub Desktop.
cml2のubuntuでcloudinitを行う際にexabgpとfrrをインストールしておく例です。鍵はいい感じに好きなのに変えておいて使ってください
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#cloud-config | |
hostname: exabgp1 | |
manage_etc_hosts: True | |
timezone: Asia/Tokyo | |
system_info: | |
default_user: | |
name: cisco | |
password: cisco | |
chpasswd: { expire: False } | |
ssh_pwauth: True | |
ssh_authorized_keys: | |
- "<your insert key>" | |
packages: | |
- unzip | |
- make | |
- python3 | |
- python3-pip | |
write_files: | |
- path: /root/install-exabgp.sh | |
permissions: 0744 | |
owner: root | |
content: | | |
#!/usr/bin/env bash | |
set -e | |
apt-get update | |
curl -sSL https://install.python-poetry.org | python3 - | |
wget https://github.com/Exa-Networks/exabgp/archive/refs/heads/main.zip | |
unzip main.zip | |
pushd exabgp-main | |
make build | |
pip install --system ./dist/exabgp-5.0.0-py3-none-any.whl | |
cat << EOF >/etc/systemd/system/exabgp.service | |
[Unit] | |
Description=ExaBGP | |
Documentation=man:exabgp(1) | |
Documentation=man:exabgp.conf(5) | |
Documentation=https://github.com/Exa-Networks/exabgp/wiki | |
After=network.target | |
ConditionPathExists=/etc/exabgp/exabgp.conf | |
[Service] | |
User=exabgp | |
Group=exabgp | |
Environment=exabgp_daemon_daemonize=false | |
RuntimeDirectory=exabgp | |
RuntimeDirectoryMode=0750 | |
ExecStartPre=-/usr/bin/mkfifo /run/exabgp/exabgp.in | |
ExecStartPre=-/usr/bin/mkfifo /run/exabgp/exabgp.out | |
ExecStart=/usr/local/bin/exabgp /etc/exabgp/exabgp.conf | |
ExecReload=/bin/kill -USR1 $MAINPID | |
Restart=always | |
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE | |
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE | |
[Install] | |
WantedBy=multi-user.target | |
EOF | |
systemctl daemon-reload | |
popd | |
mkdir /etc/exabgp | |
cat << EOF > /etc/exabgp/exabgp.conf | |
neighbor 10.0.0.2 { | |
router-id 10.0.0.1; | |
local-address 10.0.0.1; | |
local-as 65000; | |
peer-as 65000; | |
family { | |
ipv4 mup; | |
ipv6 mup; | |
} | |
announce { | |
ipv4 { | |
mup \ | |
mup-isd 10.0.1.0/24 rd 100:100 \ | |
next-hop 2001::1 \ | |
extended-community [ target:10:10 ] \ | |
bgp-prefix-sid-srv6 ( l3-service 2001:db8:1:1:: 0x48 [64,24,16,0,0,0] ); | |
mup \ | |
mup-dsd 10.0.0.1 rd 100:100 \ | |
next-hop 2001::2 \ | |
extended-community [ target:10:10 mup:10:10 ] \ | |
bgp-prefix-sid-srv6 ( l3-service 2001:db8:1:1:: 0x13 [64,24,16,0,0,0] ); | |
mup \ | |
mup-t1st 192.168.0.1/32 rd 100:100 teid 12345 qfi 9 endpoint 10.0.0.1 \ | |
next-hop 10.0.0.2 \ | |
extended-community [ target:10:10 ]; | |
mup \ | |
mup-t2st 10.0.0.1 rd 100:100 teid 12345/32 \ | |
next-hop 10.0.0.2 \ | |
extended-community [ target:10:10 mup:10:10 ]; | |
} | |
ipv6 { | |
mup \ | |
mup-isd 2001::/64 rd 100:100 \ | |
next-hop 2001::2 \ | |
extended-community [ target:10:10 ] \ | |
bgp-prefix-sid-srv6 ( l3-service 2001:db8:1:1:: 0x47 [64,24,16,0,0,0] ); | |
mup \ | |
mup-dsd 2001::1 rd 100:100 \ | |
next-hop 2001::2 \ | |
extended-community [ target:10:10 mup:10:10 ] \ | |
bgp-prefix-sid-srv6 ( l3-service 2001:db8:2:2:: 0x18 [64,24,16,0,0,0] ); | |
mup \ | |
mup-t1st 2001:db8:1:1::1/128 rd 100:100 teid 12345 qfi 9 endpoint 2001::1\ | |
next-hop 10.0.0.2 \ | |
extended-community [ target:10:10 ]; | |
mup \ | |
mup-t2st 2001::1 rd 100:100 teid 12345/32 \ | |
next-hop 10.0.0.2 \ | |
extended-community [ target:10:10 mup:10:10 ]; | |
} | |
} | |
} | |
EOF | |
groupadd --system exabgp | |
useradd --system -d /var/lib/exabgp -s /bin/bash -g exabgp exabgp | |
systemctl enable exabgp | |
systemctl start exabgp | |
- path: /etc/netplan/50-cloud-init.yaml | |
content: | | |
network: | |
ethernets: | |
ens2: | |
dhcp4: true | |
ens3: | |
dhcp4: false | |
ens4: | |
dhcp4: false | |
version: 2 | |
- path: /root/install-frr.sh | |
permissions: 0744 | |
owner: root | |
content: | | |
curl -s https://deb.frrouting.org/frr/keys.asc | apt-key add - | |
echo deb https://deb.frrouting.org/frr $(lsb_release -s -c) frr-stable | tee -a /etc/apt/sources.list.d/frr.list | |
apt-get update && apt-get install -y frr frr-pythontools | |
runcmd: | |
- sudo netplan apply | |
- sudo bash /root/install-exabgp.sh | |
- sudo bash /root/install-frr.sh |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
これが正常動作してるかはこんな感じの雰囲気で確認できる。
cisco@exabgp1:~$ sudo exabgp-cli show adj-rib out command: show adj-rib out neighbor 10.0.0.2 ipv4 mup mup:isd::100:100:10.0.1.0/24 neighbor 10.0.0.2 ipv4 mup mup:dsd::100:100:10.0.0.1 neighbor 10.0.0.2 ipv4 mup mup:t1st::100:100:192.168.0.1/32:12345:9:32:10.0.0.1 neighbor 10.0.0.2 ipv4 mup mup:t2st::100:100:12345:32:10.0.0.1 neighbor 10.0.0.2 ipv6 mup mup:isd::100:100:2001::/64 neighbor 10.0.0.2 ipv6 mup mup:dsd::100:100:2001::1 neighbor 10.0.0.2 ipv6 mup mup:t1st::100:100:2001:db8:1:1::1/128:12345:9:128:2001::1 neighbor 10.0.0.2 ipv6 mup mup:t2st::100:100:12345:128:2001::1
コンフィグを書き換えるときは
vim /etc/exabgp/exabgp.conf
でよしなにする感じ。その後はsudo exabgp-cli reload
とかで更新ができるはず