Compare commits
	
		
			628 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | f68fcb907a | ||
|  | a8a3f59c74 | ||
|  | f91f590403 | ||
|  | cd18fefa4a | ||
|  | 7a1448c3c9 | ||
|  | 2349764deb | ||
|  | 772777582a | ||
|  | f48d0ab958 | ||
|  | 9f2ca7c19d | ||
|  | 84eacd27cf | ||
|  | 3b7c616418 | ||
|  | d51461b1ef | ||
|  | fb643bfbdf | ||
|  | 7c9fcfd196 | ||
|  | fa4e8c6ae6 | ||
|  | 91f5199c29 | ||
|  | b315c7d9c0 | ||
|  | b648f54e0e | ||
|  | dbb9e29d1c | ||
|  | 9afb922d3e | ||
|  | dbc67cb6a9 | ||
|  | a7fb9cd742 | ||
|  | 65f1ee7b52 | ||
|  | 6684494379 | ||
|  | 255af1d6d8 | ||
|  | 889ad4247a | ||
|  | 2947a454fb | ||
|  | fdc5eac10e | ||
|  | 0f6781a492 | ||
|  | 77bdb66aac | ||
|  | a2cd087623 | ||
|  | 00d250e424 | ||
|  | 83436b63f8 | ||
|  | 73246eff10 | ||
|  | da8aac101d | ||
|  | 0e356340c8 | ||
|  | bf7aa9c599 | ||
|  | 649d709292 | ||
|  | 1d5b7e4f6f | ||
|  | 9a1af038ea | ||
|  | 5a56b92114 | ||
|  | 4b64172c34 | ||
|  | 3d8e1846f6 | ||
|  | c67306364f | ||
|  | a4ab1192e8 | ||
|  | 3001e7e5a7 | ||
|  | be6249d9b8 | ||
|  | ebdec8b21f | ||
|  | 90b1c95300 | ||
|  | 938cd8fad3 | ||
|  | 80c3f4549f | ||
|  | 72d2da1f2e | ||
|  | 4729ac43ab | ||
|  | 2424bd15b9 | ||
|  | f642df792f | ||
|  | 5fa7391822 | ||
|  | bb21505ff6 | ||
|  | aafa7993f3 | ||
|  | 6e1189cead | ||
|  | acd3cecea5 | ||
|  | 7dca30a0e5 | ||
|  | d7e2cf7ada | ||
|  | e36253f5df | ||
|  | f5caf0756c | ||
|  | 0531f331ab | ||
|  | efe94c9d25 | ||
|  | 676f7581f6 | ||
|  | c1a6290eda | ||
|  | 0faeb8a103 | ||
|  | fef982e0b6 | ||
|  | e88b0231b5 | ||
|  | df94cf8318 | ||
|  | dbe04281d1 | ||
|  | 03ad30b779 | ||
|  | 1550173241 | ||
|  | 34edc95cd6 | ||
|  | 9c3f44712c | ||
|  | 7bd9ca3fdd | ||
|  | bcfef1ae07 | ||
|  | c4ce1ab0a9 | ||
|  | de6a1c021b | ||
|  | c55ef639a1 | ||
|  | 45a602b144 | ||
|  | c8dfc89b07 | ||
|  | 6a11ba4a05 | ||
|  | 451cd050f8 | ||
|  | a232e315d9 | ||
|  | b87b1aae8c | ||
|  | 3e6da8ed4e | ||
|  | 304b82d451 | ||
|  | 4618187298 | ||
|  | 891add3ab5 | ||
|  | 67eeeeb81b | ||
|  | 272457a2aa | ||
|  | 6785b02ec5 | ||
|  | e4bd82f6e2 | ||
|  | 5dbf1035cf | ||
|  | a57c4789d8 | ||
|  | f9fb492e5d | ||
|  | f9af6fe1ef | ||
|  | 96208c0797 | ||
|  | 4a0d3e6e79 | ||
|  | 316586442b | ||
|  | f45708f8b7 | ||
|  | 145c5a32c0 | ||
|  | 7d3fa73deb | ||
|  | a18e7d46e7 | ||
|  | 0ff42b6f99 | ||
|  | 51a76e1b04 | ||
|  | 7274c1d33d | ||
|  | f05f59fb7d | ||
|  | a6727d7244 | ||
|  | c29ffc9b2a | ||
|  | 23da71b572 | ||
|  | 86bf13a93f | ||
|  | 8cdb9abd1c | ||
|  | 26c30c3152 | ||
|  | 0f2fab4980 | ||
|  | 448707e85d | ||
|  | e1ef371da2 | ||
|  | a3836c5eb6 | ||
|  | f2c1a7e848 | ||
|  | 6a5778f9d9 | ||
|  | 935fbb7cf2 | ||
|  | 34bebbba1b | ||
|  | d08186e4dd | ||
|  | fb1f37cd6e | ||
|  | a1d0da61af | ||
|  | ba74e9d3c8 | ||
|  | c4bf126e05 | ||
|  | fc723c2d17 | ||
|  | 0e3ca47042 | ||
|  | 2288805024 | ||
|  | 890c151dc3 | ||
|  | dee6c2445e | ||
|  | 1bb0c7db78 | ||
|  | 1a6ac6ccbc | ||
|  | 506833a7e0 | ||
|  | 0ca2478e7c | ||
|  | bdc2b90430 | ||
|  | f2f21fb5b2 | ||
|  | 79c4bab333 | ||
|  | 906c3a1d3c | ||
|  | c8b6c00192 | ||
|  | ed87190451 | ||
|  | cf93ee198e | ||
|  | 4432eaed35 | ||
|  | 1a168ab7ec | ||
|  | c2173ecb72 | ||
|  | c678872b60 | ||
|  | 2437c388d7 | ||
|  | 6d8d9adb33 | ||
|  | 303654c839 | ||
|  | c3e6faf52e | ||
|  | 6a0e00ed53 | ||
|  | 292e3507db | ||
|  | a750f4ce49 | ||
|  | 5a0e5e823d | ||
|  | 768dd2b4a3 | ||
|  | 9ca78c3edc | ||
|  | a243467ef4 | ||
|  | 65d7fbca67 | ||
|  | eaa884fd47 | ||
|  | 89b931bb53 | ||
|  | 3aaf5ba8d2 | ||
|  | 876a2fee89 | ||
|  | d22ed403a7 | ||
|  | 19e7da4db7 | ||
|  | 336aaebfdc | ||
|  | fd9c06210f | ||
|  | 372b28c900 | ||
|  | 6f9d84ad48 | ||
|  | e9d0c96fc6 | ||
|  | ccfd748890 | ||
|  | 6e041986fc | ||
|  | 70d60dc3e2 | ||
|  | cfdb5368c8 | ||
|  | 7244279d41 | ||
|  | 5aa9687b3d | ||
|  | 1ba53d2138 | ||
|  | a615211913 | ||
|  | 8c9d9bc378 | ||
|  | add2dc1a16 | ||
|  | 05ce4ca3f4 | ||
|  | 7e25ff758c | ||
|  | 4e1457c56c | ||
|  | b83d523120 | ||
|  | 59571dc22f | ||
|  | 1a464da6b6 | ||
|  | 585eff8bfe | ||
|  | 3d524a8b8e | ||
|  | d7feb03fe0 | ||
|  | 6205398554 | ||
|  | 4fdd85cdfc | ||
|  | a85db8992b | ||
|  | 8f8b7472e7 | ||
|  | ad52c66ee3 | ||
|  | a0709fb934 | ||
|  | 5dd97d77da | ||
|  | 8e87861afc | ||
|  | 602cac062a | ||
|  | 4264b155ab | ||
|  | 718f7d88f1 | ||
|  | f21c146e6d | ||
|  | abf8b85a2e | ||
|  | ace2da2281 | ||
|  | 42452c0844 | ||
|  | f1b83b30c3 | ||
|  | 55349e957b | ||
|  | a009d13255 | ||
|  | 302b2c71de | ||
|  | 1d3d420817 | ||
|  | 48764c4b73 | ||
|  | f75628c11d | ||
|  | ef6609af5e | ||
|  | aba7498135 | ||
|  | 6a54b31d32 | ||
|  | 1205c1e780 | ||
|  | fbff883dc5 | ||
|  | 89e0aa2058 | ||
|  | a9346a61a4 | ||
|  | 74289b4d80 | ||
|  | 323c37e033 | ||
|  | 0623b5d157 | ||
|  | 8d83c64d9b | ||
|  | ea0906225e | ||
|  | c60ffbd897 | ||
|  | dbe3a19230 | ||
|  | aa98e84613 | ||
|  | 3907a38ad7 | ||
|  | 34313b7551 | ||
|  | 67e9be9a3c | ||
|  | 79977d0da0 | ||
|  | ae87346cd1 | ||
|  | 5562bf87ac | ||
|  | fe15b1b31b | ||
|  | db58a8d8f3 | ||
|  | 6b6f117cfa | ||
|  | 1f8f96d60e | ||
|  | f905c4c805 | ||
|  | da5025f63e | ||
|  | d8e617c147 | ||
|  | 8e63a667a3 | ||
|  | 14fb8590f0 | ||
|  | 313645bf9a | ||
|  | 29252cafe4 | ||
|  | 6af55147b8 | ||
|  | f57720a41b | ||
|  | f421f9d3f7 | ||
|  | 4f408986a3 | ||
|  | 192b302982 | ||
|  | 6772e5f8e3 | ||
|  | 5b3d67739a | ||
|  | 61e67344a8 | ||
|  | 3740d7d0f7 | ||
|  | 656abb1240 | ||
|  | 880a7fe854 | ||
|  | 655334a87a | ||
|  | f5d85cec11 | ||
|  | 1bf8255ff6 | ||
|  | cb047b081d | ||
|  | 8f5af7b23a | ||
|  | 8c0dab4583 | ||
|  | 4c5cff1690 | ||
|  | 0d5c2bd438 | ||
|  | 3d64bea944 | ||
|  | 6a88ab9bb1 | ||
|  | 7c58e0fec3 | ||
|  | e8a4152361 | ||
|  | 30bcbedb80 | ||
|  | 95662f863b | ||
|  | 265fe883ee | ||
|  | 9d5b460af8 | ||
|  | eb0d28c1e2 | ||
|  | 13928426cb | ||
|  | 432ff9a00c | ||
|  | 51af0bf7dd | ||
|  | df160e3120 | ||
|  | d057e98551 | ||
|  | 6bbd9dfca4 | ||
|  | c0e1931e83 | ||
|  | 59d887b362 | ||
|  | 7fb847939f | ||
|  | 8847496eb2 | ||
|  | a2fefe3e0d | ||
|  | 5978d17ff0 | ||
|  | d5334c3c06 | ||
|  | 7ad9be13de | ||
|  | 00df76af8f | ||
|  | dd7390a38b | ||
|  | fa7b4561b4 | ||
|  | d552d69fca | ||
|  | c9d1eec588 | ||
|  | 6c20c06b4f | ||
|  | 7bc57c82fb | ||
|  | 5c9651a598 | ||
|  | 5a865a76ab | ||
|  | 2df1c7d8b4 | ||
|  | 94a506ca40 | ||
|  | 58beb33d4f | ||
|  | 235ca6cdbb | ||
|  | fbdf9fef0f | ||
|  | 0c0edd618f | ||
|  | de21cd787f | ||
|  | db42af861e | ||
|  | 4ddcd64367 | ||
|  | 80dac2f234 | ||
|  | 6ffa0359b0 | ||
|  | f42b7b8199 | ||
|  | 4b562eed7e | ||
|  | 5cc61efe19 | ||
|  | 74520dd882 | ||
|  | 857a8ace8a | ||
|  | 8f93da0293 | ||
|  | 9818d4c0e9 | ||
|  | 207a7b7255 | ||
|  | f3e59ac1cd | ||
|  | 221be1eb06 | ||
|  | 2488460230 | ||
|  | 8a332790cd | ||
|  | 45a06ef13f | ||
|  | 127e02a004 | ||
|  | 7fff297724 | ||
|  | b3be34ed13 | ||
|  | c7a8f655cd | ||
|  | a1f0c76ca7 | ||
|  | b5c6d94696 | ||
|  | db246ebed1 | ||
|  | 4eaf1f81c1 | ||
|  | c1c59ab096 | ||
|  | 0d41fdf527 | ||
|  | 6052f0d737 | ||
|  | 5ba64c1f71 | ||
|  | 889cddf1b3 | ||
|  | 06326bcc84 | ||
|  | 5d13bc96ee | ||
|  | a3418ea8d8 | ||
|  | 64bd57c571 | ||
|  | 5604928d1b | ||
|  | 488672f765 | ||
|  | 1d23239ec3 | ||
|  | bc29ac19a0 | ||
|  | e4c4c960f1 | ||
|  | a8bd9977ba | ||
|  | d0cd152fb8 | ||
|  | 8cfc9b264c | ||
|  | e96caad9e3 | ||
|  | b6bbff680f | ||
|  | 3dd6d3c8d9 | ||
|  | 8ccf2db4fa | ||
|  | 24f72e9ca4 | ||
|  | 8fba15fc1b | ||
|  | 10cd25169e | ||
|  | 5d677168bc | ||
|  | 809fe36227 | ||
|  | 8ad770055b | ||
|  | fd328befc6 | ||
|  | fbe5780c4e | ||
|  | 8aedccf83c | ||
|  | aca89485df | ||
|  | 3b556cb154 | ||
|  | 6ed06afb70 | ||
|  | bbf442c94c | ||
|  | 87a777bf5d | ||
|  | 1ef5e5e70a | ||
|  | 0995b5984b | ||
|  | 768ad7a2e7 | ||
|  | 983efba3dd | ||
|  | b8a9bf8a13 | ||
|  | aadb42cc9c | ||
|  | 89decd0d67 | ||
|  | e81786f258 | ||
|  | b1f0cfc91b | ||
|  | 1ed197bb77 | ||
|  | c3918dd1ce | ||
|  | bc1f0bb53b | ||
|  | 54ec97d003 | ||
|  | 48ac071fe0 | ||
|  | d2fa5ad7ea | ||
|  | 08dc6a027f | ||
|  | 4c9f3adc5f | ||
|  | f6f6962ad4 | ||
|  | afe238a8b9 | ||
|  | 99ee394158 | ||
|  | be74b12e5b | ||
|  | 9dc8e13145 | ||
|  | 81673d5778 | ||
|  | ee151ff3d6 | ||
|  | 02b8acffc4 | ||
|  | 080c987e58 | ||
|  | 5302041474 | ||
|  | 35f30a2452 | ||
|  | a1d94425d0 | ||
|  | c406312ec3 | ||
|  | 638e43825c | ||
|  | 7946438b90 | ||
|  | 0d09debdd0 | ||
|  | 00e98088c3 | ||
|  | 480254848f | ||
|  | 9fdab652fa | ||
|  | 8c9df535dd | ||
|  | 85653331c7 | ||
|  | 7e9a2cb952 | ||
|  | 6feda9458b | ||
|  | 3d10330fa3 | ||
|  | 52c6ff124a | ||
|  | 499c17b2f4 | ||
|  | 028043df55 | ||
|  | cafd01a8f0 | ||
|  | c8e6c51cb5 | ||
|  | 315cd47a4c | ||
|  | bf50e539e7 | ||
|  | 97c36bf46e | ||
|  | 8c3a5f67bd | ||
|  | d99bd4e9eb | ||
|  | 912982d6f0 | ||
|  | 3eab2b01b8 | ||
|  | 0386e8f8f6 | ||
|  | 63451d725a | ||
|  | d354b188f7 | ||
|  | c949341dcf | ||
|  | ed884660e0 | ||
|  | 4d95c2ad1e | ||
|  | d7b7cbff34 | ||
|  | 7626934484 | ||
|  | 98317d1e74 | ||
|  | 8f70d69605 | ||
|  | e8af1225cd | ||
|  | 508dd6abfe | ||
|  | d643395999 | ||
|  | 8734c24604 | ||
|  | 8ad1637066 | ||
|  | 2997c33006 | ||
|  | 945ad0f422 | ||
|  | 24f85e110c | ||
|  | b1105d89ea | ||
|  | 34bf4bde8e | ||
|  | 19dedc2d1d | ||
|  | 26f92e815d | ||
|  | 32f6e4e750 | ||
|  | 65f8287e5a | ||
|  | 37d523f4fb | ||
|  | 78fa8bf11e | ||
|  | a0a76a1e5e | ||
|  | e74f47016d | ||
|  | d654cb418b | ||
|  | 8020b0fc6d | ||
|  | 5c06d56aef | ||
|  | 4e6a2940e4 | ||
|  | 87ac4f57a2 | ||
|  | a362d1b248 | ||
|  | 03a46f6024 | ||
|  | a0ddc0459e | ||
|  | 312550e2f1 | ||
|  | 7479329761 | ||
|  | 493ab71d08 | ||
|  | 83b323341e | ||
|  | 937facd3be | ||
|  | e6663754d6 | ||
|  | fad0a5630e | ||
|  | c553470b40 | ||
|  | d740e32c29 | ||
|  | 33e125f977 | ||
|  | 2ab3de72f2 | ||
|  | 1d18fa1704 | ||
|  | 16202377fc | ||
|  | 7d78864f83 | ||
|  | d12c1d2100 | ||
|  | 4887b8e1db | ||
|  | 720e7b38ec | ||
|  | e86dc3a0a0 | ||
|  | ade7b62c19 | ||
|  | 019f1a7320 | ||
|  | d687f9e562 | ||
|  | 7e782af3c2 | ||
|  | 848c538299 | ||
|  | b913678b8a | ||
|  | 6020f60383 | ||
|  | 073fada067 | ||
|  | ff5e87fc27 | ||
|  | 78f67b5feb | ||
|  | d0c2bfb2f5 | ||
|  | 63b280caeb | ||
|  | aac07e66fd | ||
|  | b4e43503bf | ||
|  | 54afd51b3a | ||
|  | 174f5ecd05 | ||
|  | b536ae8b77 | ||
|  | eb4b1a7afb | ||
|  | 02cdce62d9 | ||
|  | 3966ecab49 | ||
|  | 7dadc47c1b | ||
|  | 4f892a94ef | ||
|  | 5208bfc382 | ||
|  | 018e9ecc9c | ||
|  | f57d92ec80 | ||
|  | 3e6fc1eca6 | ||
|  | 172da7e976 | ||
|  | f9ef4cc92c | ||
|  | b44f442f48 | ||
|  | 9a4153767f | ||
|  | 24bc08147b | ||
|  | 8f00ed3d74 | ||
|  | a129b72394 | ||
|  | 84e6de3bf7 | ||
|  | 830fe68596 | ||
|  | 319c9261ea | ||
|  | 5e03e46680 | ||
|  | e2294a6724 | ||
|  | bd12a788e3 | ||
|  | f8e33c583d | ||
|  | 9e818f7af3 | ||
|  | dcbf725b9c | ||
|  | b5d56655d7 | ||
|  | b54e46ea05 | ||
|  | 949a0a703a | ||
|  | e74aca7d00 | ||
|  | 2346cd064d | ||
|  | 9c8ba13643 | ||
|  | 85c219b710 | ||
|  | 9b0a9c1f74 | ||
|  | 7b1df8e079 | ||
|  | e18178c1f9 | ||
|  | 7a4a3911f5 | ||
|  | 1b15e4578a | ||
|  | f4ed696a46 | ||
|  | 1a59c34c1b | ||
|  | 1565a63bbc | ||
|  | 383ae98f1b | ||
|  | 3daf2bde40 | ||
|  | 88f9c73fd6 | ||
|  | 6dfe39f1b5 | ||
|  | 4642dacf8a | ||
|  | 268d8b5598 | ||
|  | bb6c75974b | ||
|  | afa4e74ddc | ||
|  | 706cfa6f90 | ||
|  | b960dd7c4c | ||
|  | 67555c4fc0 | ||
|  | fd22f8d537 | ||
|  | 50294038fe | ||
|  | 49eb1d1fbf | ||
|  | e293157f49 | ||
|  | 0214fa56b1 | ||
|  | 69a3ca264d | ||
|  | 8f798aec36 | ||
|  | dc2bd94fca | ||
|  | 808cac50a5 | ||
|  | 090f04b9ee | ||
|  | 2b54b3f575 | ||
|  | a87b81dbdb | ||
|  | e1c8742e99 | ||
|  | 99ba80f8da | ||
|  | 20345453a1 | ||
|  | baedb6b79a | ||
|  | 811ab2c7a6 | ||
|  | 62a786dc94 | ||
|  | 53376e0f7f | ||
|  | 7b17d75488 | ||
|  | ab9d07e517 | ||
|  | 9055354a5e | ||
|  | 47d0798248 | ||
|  | b246afed00 | ||
|  | e76616e44d | ||
|  | 4e4b365e0a | ||
|  | 6643c43bd6 | ||
|  | ccf5338fb9 | ||
|  | de18e13d33 | ||
|  | 0907419f5c | ||
|  | 249dbba996 | ||
|  | cb653588ab | ||
|  | b28d0d72b3 | ||
|  | 7e160bf3b7 | ||
|  | 2df7dd62bb | ||
|  | 8f9d6e8ab6 | ||
|  | 0b93eabfbb | ||
|  | 358da3d8ee | ||
|  | 2744851088 | ||
|  | c3b9667eea | ||
|  | bd028cc7ad | ||
|  | c03f0c98d1 | ||
|  | 3b426d01bb | ||
|  | ba6e505d18 | ||
|  | ada75b1ce9 | ||
|  | 7fd70a9f6b | ||
|  | 85a1523143 | ||
|  | cb51e5ac54 | ||
|  | ca605c6942 | ||
|  | 400e1774a7 | ||
|  | 16fb2a71f9 | ||
|  | bab8bd3f5a | ||
|  | d93bdc3da7 | ||
|  | 1f478d0587 | ||
|  | b2b159adc4 | ||
|  | 7529e811ee | ||
|  | 1211f9a85e | ||
|  | d8b2da2c2e | ||
|  | 60e8db53ed | ||
|  | cd68ff6c6d | ||
|  | a8e81d22be | ||
|  | 88d51f8136 | ||
|  | fedcc80947 | ||
|  | fb7d6976dd | ||
|  | 740fd0e911 | ||
|  | f0f40dffed | ||
|  | 5eb37c1bba | ||
|  | ae168253d6 | ||
|  | 49d28e4206 | ||
|  | 9b6f4d6e14 | ||
|  | 8a5286b648 | ||
|  | 6113b65401 | ||
|  | 7d6e61dd70 | ||
|  | ce6aba8c6f | ||
|  | 80b9aba49a | ||
|  | 28f4b2b6d6 | ||
|  | 133aa83b2e | ||
|  | e009486509 | ||
|  | 5660706d6c | ||
|  | 4a1d98fb71 | ||
|  | 68bc5990bf | ||
|  | 20a46206f2 | ||
|  | d1847b4c81 | ||
|  | 933ee30973 | ||
|  | d8b1fa0a09 | ||
|  | 87bb6d5e6e | ||
|  | 0895c91987 | ||
|  | adddcd6841 | ||
|  | 33a3a39871 | 
							
								
								
									
										9
									
								
								.github/styles/Google/AMPM.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,9 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Use 'AM' or 'PM' (preceded by a space)." |  | ||||||
| link: 'https://developers.google.com/style/word-list' |  | ||||||
| level: error |  | ||||||
| nonword: true |  | ||||||
| tokens: |  | ||||||
|   - '\d{1,2}[AP]M' |  | ||||||
|   - '\d{1,2} ?[ap]m' |  | ||||||
|   - '\d{1,2} ?[aApP]\.[mM]\.' |  | ||||||
							
								
								
									
										64
									
								
								.github/styles/Google/Acronyms.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,64 +0,0 @@ | |||||||
| extends: conditional |  | ||||||
| message: "Spell out '%s', if it's unfamiliar to the audience." |  | ||||||
| link: 'https://developers.google.com/style/abbreviations' |  | ||||||
| level: suggestion |  | ||||||
| ignorecase: false |  | ||||||
| # Ensures that the existence of 'first' implies the existence of 'second'. |  | ||||||
| first: '\b([A-Z]{3,5})\b' |  | ||||||
| second: '(?:\b[A-Z][a-z]+ )+\(([A-Z]{3,5})\)' |  | ||||||
| # ... with the exception of these: |  | ||||||
| exceptions: |  | ||||||
|   - API |  | ||||||
|   - ASP |  | ||||||
|   - CLI |  | ||||||
|   - CPU |  | ||||||
|   - CSS |  | ||||||
|   - CSV |  | ||||||
|   - DEBUG |  | ||||||
|   - DOM |  | ||||||
|   - DPI |  | ||||||
|   - FAQ |  | ||||||
|   - GCC |  | ||||||
|   - GDB |  | ||||||
|   - GET |  | ||||||
|   - GPU |  | ||||||
|   - GTK |  | ||||||
|   - GUI |  | ||||||
|   - HTML |  | ||||||
|   - HTTP |  | ||||||
|   - HTTPS |  | ||||||
|   - IDE |  | ||||||
|   - JAR |  | ||||||
|   - JSON |  | ||||||
|   - JSX |  | ||||||
|   - LESS |  | ||||||
|   - LLDB |  | ||||||
|   - NET |  | ||||||
|   - NOTE |  | ||||||
|   - NVDA |  | ||||||
|   - OSS |  | ||||||
|   - PATH |  | ||||||
|   - PDF |  | ||||||
|   - PHP |  | ||||||
|   - POST |  | ||||||
|   - RAM |  | ||||||
|   - REPL |  | ||||||
|   - RSA |  | ||||||
|   - SCM |  | ||||||
|   - SCSS |  | ||||||
|   - SDK |  | ||||||
|   - SQL |  | ||||||
|   - SSH |  | ||||||
|   - SSL |  | ||||||
|   - SVG |  | ||||||
|   - TBD |  | ||||||
|   - TCP |  | ||||||
|   - TODO |  | ||||||
|   - URI |  | ||||||
|   - URL |  | ||||||
|   - USB |  | ||||||
|   - UTF |  | ||||||
|   - XML |  | ||||||
|   - XSS |  | ||||||
|   - YAML |  | ||||||
|   - ZIP |  | ||||||
							
								
								
									
										7
									
								
								.github/styles/Google/Colons.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,7 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "'%s' should be in lowercase." |  | ||||||
| link: 'https://developers.google.com/style/colons' |  | ||||||
| nonword: true |  | ||||||
| level: warning |  | ||||||
| tokens: |  | ||||||
|   - ':\s[A-Z]' |  | ||||||
							
								
								
									
										28
									
								
								.github/styles/Google/Contractions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,28 +0,0 @@ | |||||||
| extends: substitution |  | ||||||
| message: "Feel free to use '%s' instead of '%s'." |  | ||||||
| link: 'https://developers.google.com/style/contractions' |  | ||||||
| level: suggestion |  | ||||||
| ignorecase: true |  | ||||||
| swap: |  | ||||||
|   are not: aren't |  | ||||||
|   cannot: can't |  | ||||||
|   could not: couldn't |  | ||||||
|   did not: didn't |  | ||||||
|   do not: don't |  | ||||||
|   does not: doesn't |  | ||||||
|   has not: hasn't |  | ||||||
|   have not: haven't |  | ||||||
|   how is: how's |  | ||||||
|   is not: isn't |  | ||||||
|   it is: it's |  | ||||||
|   should not: shouldn't |  | ||||||
|   that is: that's |  | ||||||
|   they are: they're |  | ||||||
|   was not: wasn't |  | ||||||
|   we are: we're |  | ||||||
|   we have: we've |  | ||||||
|   were not: weren't |  | ||||||
|   what is: what's |  | ||||||
|   when is: when's |  | ||||||
|   where is: where's |  | ||||||
|   will not: won't |  | ||||||
							
								
								
									
										9
									
								
								.github/styles/Google/DateFormat.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,9 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Use 'July 31, 2016' format, not '%s'." |  | ||||||
| link: 'https://developers.google.com/style/dates-times' |  | ||||||
| ignorecase: true |  | ||||||
| level: error |  | ||||||
| nonword: true |  | ||||||
| tokens: |  | ||||||
|   - '\d{1,2}(?:\.|/)\d{1,2}(?:\.|/)\d{4}' |  | ||||||
|   - '\d{1,2} (?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?) \d{4}' |  | ||||||
							
								
								
									
										7
									
								
								.github/styles/Google/Ellipses.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,7 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "In general, don't use an ellipsis." |  | ||||||
| link: 'https://developers.google.com/style/ellipses' |  | ||||||
| nonword: true |  | ||||||
| level: warning |  | ||||||
| tokens: |  | ||||||
|   - '\.\.\.' |  | ||||||
							
								
								
									
										8
									
								
								.github/styles/Google/EmDash.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,8 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Don't put a space before or after an em dash." |  | ||||||
| link: 'https://developers.google.com/style/dashes' |  | ||||||
| nonword: true |  | ||||||
| level: error |  | ||||||
| tokens: |  | ||||||
|   - '\s—' |  | ||||||
|   - '—\s' |  | ||||||
							
								
								
									
										7
									
								
								.github/styles/Google/EnDash.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,7 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Use an em dash ('—') instead of '–'." |  | ||||||
| link: 'https://developers.google.com/style/dashes' |  | ||||||
| nonword: true |  | ||||||
| level: error |  | ||||||
| tokens: |  | ||||||
|   - '–' |  | ||||||
							
								
								
									
										7
									
								
								.github/styles/Google/Exclamation.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,7 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Don't use exclamation points in text." |  | ||||||
| link: 'https://developers.google.com/style/exclamation-points' |  | ||||||
| nonword: true |  | ||||||
| level: error |  | ||||||
| tokens: |  | ||||||
|   - '!' |  | ||||||
							
								
								
									
										11
									
								
								.github/styles/Google/FirstPerson.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,11 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Avoid first-person pronouns such as '%s'." |  | ||||||
| link: 'https://developers.google.com/style/pronouns#personal-pronouns' |  | ||||||
| ignorecase: true |  | ||||||
| level: warning |  | ||||||
| nonword: true |  | ||||||
| tokens: |  | ||||||
|   - (?:^|\s)I\s |  | ||||||
|   - \bme\b |  | ||||||
|   - \bus\b |  | ||||||
|   - \bours\b |  | ||||||
							
								
								
									
										9
									
								
								.github/styles/Google/Gender.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,9 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Don't use '%s' as a gender-neutral pronoun." |  | ||||||
| link: 'https://developers.google.com/style/pronouns#gender-neutral-pronouns' |  | ||||||
| level: error |  | ||||||
| ignorecase: true |  | ||||||
| tokens: |  | ||||||
|   - he/she |  | ||||||
|   - s/he |  | ||||||
|   - \(s\)he |  | ||||||
							
								
								
									
										45
									
								
								.github/styles/Google/GenderBias.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,45 +0,0 @@ | |||||||
| extends: substitution |  | ||||||
| message: "Consider using '%s' instead of '%s'." |  | ||||||
| link: 'https://developers.google.com/style/inclusive-documentation' |  | ||||||
| ignorecase: true |  | ||||||
| level: error |  | ||||||
| swap: |  | ||||||
|   (?:alumna|alumnus):          graduate |  | ||||||
|   (?:alumnae|alumni):          graduates |  | ||||||
|   air(?:m[ae]n|wom[ae]n):      pilot(s) |  | ||||||
|   anchor(?:m[ae]n|wom[ae]n):   anchor(s) |  | ||||||
|   authoress:                   author |  | ||||||
|   camera(?:m[ae]n|wom[ae]n):   camera operator(s) |  | ||||||
|   chair(?:m[ae]n|wom[ae]n):    chair(s) |  | ||||||
|   congress(?:m[ae]n|wom[ae]n): member(s) of congress |  | ||||||
|   door(?:m[ae]|wom[ae]n):      concierge(s) |  | ||||||
|   draft(?:m[ae]n|wom[ae]n):    drafter(s) |  | ||||||
|   fire(?:m[ae]n|wom[ae]n):     firefighter(s) |  | ||||||
|   fisher(?:m[ae]n|wom[ae]n):   fisher(s) |  | ||||||
|   fresh(?:m[ae]n|wom[ae]n):    first-year student(s) |  | ||||||
|   garbage(?:m[ae]n|wom[ae]n):  waste collector(s) |  | ||||||
|   lady lawyer:                 lawyer |  | ||||||
|   ladylike:                    courteous |  | ||||||
|   landlord:                    building manager |  | ||||||
|   mail(?:m[ae]n|wom[ae]n):     mail carriers |  | ||||||
|   man and wife:                husband and wife |  | ||||||
|   man enough:                  strong enough |  | ||||||
|   mankind:                     human kind |  | ||||||
|   manmade:                     manufactured |  | ||||||
|   manpower:                    personnel |  | ||||||
|   men and girls:               men and women |  | ||||||
|   middle(?:m[ae]n|wom[ae]n):   intermediary |  | ||||||
|   news(?:m[ae]n|wom[ae]n):     journalist(s) |  | ||||||
|   ombuds(?:man|woman):         ombuds |  | ||||||
|   oneupmanship:                upstaging |  | ||||||
|   poetess:                     poet |  | ||||||
|   police(?:m[ae]n|wom[ae]n):   police officer(s) |  | ||||||
|   repair(?:m[ae]n|wom[ae]n):   technician(s) |  | ||||||
|   sales(?:m[ae]n|wom[ae]n):    salesperson or sales people |  | ||||||
|   service(?:m[ae]n|wom[ae]n):  soldier(s) |  | ||||||
|   steward(?:ess)?:             flight attendant |  | ||||||
|   tribes(?:m[ae]n|wom[ae]n):   tribe member(s) |  | ||||||
|   waitress:                    waiter |  | ||||||
|   woman doctor:                doctor |  | ||||||
|   woman scientist[s]?:         scientist(s) |  | ||||||
|   work(?:m[ae]n|wom[ae]n):     worker(s) |  | ||||||
							
								
								
									
										8
									
								
								.github/styles/Google/HeadingPunctuation.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,8 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Don't put a period at the end of a heading." |  | ||||||
| link: 'https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings' |  | ||||||
| nonword: true |  | ||||||
| level: warning |  | ||||||
| scope: heading |  | ||||||
| tokens: |  | ||||||
|   - '[a-z0-9][.](?:\s|$)' |  | ||||||
							
								
								
									
										26
									
								
								.github/styles/Google/Headings.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,26 +0,0 @@ | |||||||
| extends: capitalization |  | ||||||
| message: "'%s' should use sentence-style capitalization." |  | ||||||
| link: 'https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings' |  | ||||||
| level: warning |  | ||||||
| scope: heading |  | ||||||
| match: $sentence |  | ||||||
| exceptions: |  | ||||||
|   - Azure |  | ||||||
|   - CLI |  | ||||||
|   - Code |  | ||||||
|   - Cosmos |  | ||||||
|   - Docker |  | ||||||
|   - Emmet |  | ||||||
|   - I |  | ||||||
|   - Kubernetes |  | ||||||
|   - Linux |  | ||||||
|   - macOS |  | ||||||
|   - Marketplace |  | ||||||
|   - MongoDB |  | ||||||
|   - REPL |  | ||||||
|   - Studio |  | ||||||
|   - TypeScript |  | ||||||
|   - URLs |  | ||||||
|   - Visual |  | ||||||
|   - VS |  | ||||||
|   - Windows |  | ||||||
							
								
								
									
										8
									
								
								.github/styles/Google/Hyphens.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,8 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Don't place a space on either side of a hyphen (unless it's suspended)." |  | ||||||
| link: 'https://developers.google.com/style/hyphens' |  | ||||||
| level: warning |  | ||||||
| nonword: true |  | ||||||
| tokens: |  | ||||||
|   - '\s-' |  | ||||||
|   - '-\s' |  | ||||||
							
								
								
									
										9
									
								
								.github/styles/Google/Latin.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,9 +0,0 @@ | |||||||
| extends: substitution |  | ||||||
| message: "Use '%s' instead of '%s'." |  | ||||||
| link: 'https://developers.google.com/style/abbreviations' |  | ||||||
| ignorecase: true |  | ||||||
| level: error |  | ||||||
| nonword: true |  | ||||||
| swap: |  | ||||||
|   '\b(?:eg|e\.g\.)[\s,]': for example |  | ||||||
|   '\b(?:ie|i\.e\.)[\s,]': that is |  | ||||||
							
								
								
									
										8
									
								
								.github/styles/Google/LyHyphens.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,8 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "'%s' doesn't need a hyphen." |  | ||||||
| link: 'https://developers.google.com/style/hyphens' |  | ||||||
| level: error |  | ||||||
| ignorecase: false |  | ||||||
| nonword: true |  | ||||||
| tokens: |  | ||||||
|   - '\s[^\s-]+ly-' |  | ||||||
							
								
								
									
										7
									
								
								.github/styles/Google/OptionalPlurals.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,7 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Don't use plurals in parentheses such as in '%s'." |  | ||||||
| link: 'https://developers.google.com/style/plurals-parentheses' |  | ||||||
| level: error |  | ||||||
| nonword: true |  | ||||||
| tokens: |  | ||||||
|   - '\b\w+\(s\)' |  | ||||||
							
								
								
									
										7
									
								
								.github/styles/Google/Ordinal.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,7 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Spell out all ordinal numbers ('%s') in text." |  | ||||||
| link: 'https://developers.google.com/style/numbers' |  | ||||||
| level: error |  | ||||||
| nonword: true |  | ||||||
| tokens: |  | ||||||
|   - \d+(?:st|th|rd) |  | ||||||
							
								
								
									
										7
									
								
								.github/styles/Google/OxfordComma.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,7 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Use the Oxford comma in '%s'." |  | ||||||
| link: 'https://developers.google.com/style/commas' |  | ||||||
| scope: sentence |  | ||||||
| level: warning |  | ||||||
| tokens: |  | ||||||
|   - '(?:[^,]+,){1,}\s\w+\sand' |  | ||||||
							
								
								
									
										7
									
								
								.github/styles/Google/Parens.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,7 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Use parentheses judiciously." |  | ||||||
| link: 'https://developers.google.com/style/parentheses' |  | ||||||
| nonword: true |  | ||||||
| level: suggestion |  | ||||||
| tokens: |  | ||||||
|   - '\(.+\)' |  | ||||||
							
								
								
									
										184
									
								
								.github/styles/Google/Passive.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,184 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| link: 'https://developers.google.com/style/voice' |  | ||||||
| message: "In general, use active voice instead of passive voice ('%s')." |  | ||||||
| ignorecase: true |  | ||||||
| level: suggestion |  | ||||||
| raw: |  | ||||||
|   - \b(am|are|were|being|is|been|was|be)\b\s* |  | ||||||
| tokens: |  | ||||||
|   - '[\w]+ed' |  | ||||||
|   - awoken |  | ||||||
|   - beat |  | ||||||
|   - become |  | ||||||
|   - been |  | ||||||
|   - begun |  | ||||||
|   - bent |  | ||||||
|   - beset |  | ||||||
|   - bet |  | ||||||
|   - bid |  | ||||||
|   - bidden |  | ||||||
|   - bitten |  | ||||||
|   - bled |  | ||||||
|   - blown |  | ||||||
|   - born |  | ||||||
|   - bought |  | ||||||
|   - bound |  | ||||||
|   - bred |  | ||||||
|   - broadcast |  | ||||||
|   - broken |  | ||||||
|   - brought |  | ||||||
|   - built |  | ||||||
|   - burnt |  | ||||||
|   - burst |  | ||||||
|   - cast |  | ||||||
|   - caught |  | ||||||
|   - chosen |  | ||||||
|   - clung |  | ||||||
|   - come |  | ||||||
|   - cost |  | ||||||
|   - crept |  | ||||||
|   - cut |  | ||||||
|   - dealt |  | ||||||
|   - dived |  | ||||||
|   - done |  | ||||||
|   - drawn |  | ||||||
|   - dreamt |  | ||||||
|   - driven |  | ||||||
|   - drunk |  | ||||||
|   - dug |  | ||||||
|   - eaten |  | ||||||
|   - fallen |  | ||||||
|   - fed |  | ||||||
|   - felt |  | ||||||
|   - fit |  | ||||||
|   - fled |  | ||||||
|   - flown |  | ||||||
|   - flung |  | ||||||
|   - forbidden |  | ||||||
|   - foregone |  | ||||||
|   - forgiven |  | ||||||
|   - forgotten |  | ||||||
|   - forsaken |  | ||||||
|   - fought |  | ||||||
|   - found |  | ||||||
|   - frozen |  | ||||||
|   - given |  | ||||||
|   - gone |  | ||||||
|   - gotten |  | ||||||
|   - ground |  | ||||||
|   - grown |  | ||||||
|   - heard |  | ||||||
|   - held |  | ||||||
|   - hidden |  | ||||||
|   - hit |  | ||||||
|   - hung |  | ||||||
|   - hurt |  | ||||||
|   - kept |  | ||||||
|   - knelt |  | ||||||
|   - knit |  | ||||||
|   - known |  | ||||||
|   - laid |  | ||||||
|   - lain |  | ||||||
|   - leapt |  | ||||||
|   - learnt |  | ||||||
|   - led |  | ||||||
|   - left |  | ||||||
|   - lent |  | ||||||
|   - let |  | ||||||
|   - lighted |  | ||||||
|   - lost |  | ||||||
|   - made |  | ||||||
|   - meant |  | ||||||
|   - met |  | ||||||
|   - misspelt |  | ||||||
|   - mistaken |  | ||||||
|   - mown |  | ||||||
|   - overcome |  | ||||||
|   - overdone |  | ||||||
|   - overtaken |  | ||||||
|   - overthrown |  | ||||||
|   - paid |  | ||||||
|   - pled |  | ||||||
|   - proven |  | ||||||
|   - put |  | ||||||
|   - quit |  | ||||||
|   - read |  | ||||||
|   - rid |  | ||||||
|   - ridden |  | ||||||
|   - risen |  | ||||||
|   - run |  | ||||||
|   - rung |  | ||||||
|   - said |  | ||||||
|   - sat |  | ||||||
|   - sawn |  | ||||||
|   - seen |  | ||||||
|   - sent |  | ||||||
|   - set |  | ||||||
|   - sewn |  | ||||||
|   - shaken |  | ||||||
|   - shaven |  | ||||||
|   - shed |  | ||||||
|   - shod |  | ||||||
|   - shone |  | ||||||
|   - shorn |  | ||||||
|   - shot |  | ||||||
|   - shown |  | ||||||
|   - shrunk |  | ||||||
|   - shut |  | ||||||
|   - slain |  | ||||||
|   - slept |  | ||||||
|   - slid |  | ||||||
|   - slit |  | ||||||
|   - slung |  | ||||||
|   - smitten |  | ||||||
|   - sold |  | ||||||
|   - sought |  | ||||||
|   - sown |  | ||||||
|   - sped |  | ||||||
|   - spent |  | ||||||
|   - spilt |  | ||||||
|   - spit |  | ||||||
|   - split |  | ||||||
|   - spoken |  | ||||||
|   - spread |  | ||||||
|   - sprung |  | ||||||
|   - spun |  | ||||||
|   - stolen |  | ||||||
|   - stood |  | ||||||
|   - stridden |  | ||||||
|   - striven |  | ||||||
|   - struck |  | ||||||
|   - strung |  | ||||||
|   - stuck |  | ||||||
|   - stung |  | ||||||
|   - stunk |  | ||||||
|   - sung |  | ||||||
|   - sunk |  | ||||||
|   - swept |  | ||||||
|   - swollen |  | ||||||
|   - sworn |  | ||||||
|   - swum |  | ||||||
|   - swung |  | ||||||
|   - taken |  | ||||||
|   - taught |  | ||||||
|   - thought |  | ||||||
|   - thrived |  | ||||||
|   - thrown |  | ||||||
|   - thrust |  | ||||||
|   - told |  | ||||||
|   - torn |  | ||||||
|   - trodden |  | ||||||
|   - understood |  | ||||||
|   - upheld |  | ||||||
|   - upset |  | ||||||
|   - wed |  | ||||||
|   - wept |  | ||||||
|   - withheld |  | ||||||
|   - withstood |  | ||||||
|   - woken |  | ||||||
|   - won |  | ||||||
|   - worn |  | ||||||
|   - wound |  | ||||||
|   - woven |  | ||||||
|   - written |  | ||||||
|   - wrung |  | ||||||
							
								
								
									
										7
									
								
								.github/styles/Google/Periods.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,7 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Don't use periods with acronyms or initialisms such as '%s'." |  | ||||||
| link: 'https://developers.google.com/style/abbreviations' |  | ||||||
| level: error |  | ||||||
| nonword: true |  | ||||||
| tokens: |  | ||||||
|   - '\b(?:[A-Z]\.){3,}' |  | ||||||
							
								
								
									
										7
									
								
								.github/styles/Google/Quotes.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,7 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Commas and periods go inside quotation marks." |  | ||||||
| link: 'https://developers.google.com/style/quotation-marks' |  | ||||||
| level: error |  | ||||||
| nonword: true |  | ||||||
| tokens: |  | ||||||
|   - '"[^"]+"[.,?]' |  | ||||||
							
								
								
									
										7
									
								
								.github/styles/Google/Ranges.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,7 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Don't add words such as 'from' or 'between' to describe a range of numbers." |  | ||||||
| link: 'https://developers.google.com/style/hyphens' |  | ||||||
| nonword: true |  | ||||||
| level: warning |  | ||||||
| tokens: |  | ||||||
|   - '(?:from|between)\s\d+\s?-\s?\d+' |  | ||||||
							
								
								
									
										8
									
								
								.github/styles/Google/Semicolons.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,8 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Use semicolons judiciously." |  | ||||||
| link: 'https://developers.google.com/style/semicolons' |  | ||||||
| nonword: true |  | ||||||
| scope: sentence |  | ||||||
| level: suggestion |  | ||||||
| tokens: |  | ||||||
|   - ';' |  | ||||||
							
								
								
									
										11
									
								
								.github/styles/Google/Slang.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,11 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Don't use internet slang abbreviations such as '%s'." |  | ||||||
| link: 'https://developers.google.com/style/abbreviations' |  | ||||||
| ignorecase: true |  | ||||||
| level: error |  | ||||||
| tokens: |  | ||||||
|   - 'tl;dr' |  | ||||||
|   - ymmv |  | ||||||
|   - rtfm |  | ||||||
|   - imo |  | ||||||
|   - fwiw |  | ||||||
							
								
								
									
										8
									
								
								.github/styles/Google/Spacing.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,8 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "'%s' should have one space." |  | ||||||
| link: 'https://developers.google.com/style/sentence-spacing' |  | ||||||
| level: error |  | ||||||
| nonword: true |  | ||||||
| tokens: |  | ||||||
|   - '[.?!] {2,}[A-Z]' |  | ||||||
|   - '[.?!][A-Z]' |  | ||||||
							
								
								
									
										8
									
								
								.github/styles/Google/Spelling.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,8 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "In general, use American spelling instead of '%s'." |  | ||||||
| link: 'https://developers.google.com/style/spelling' |  | ||||||
| ignorecase: true |  | ||||||
| level: warning |  | ||||||
| tokens: |  | ||||||
|   - '(?:\w+)nised?' |  | ||||||
|   - '(?:\w+)logue' |  | ||||||
							
								
								
									
										7
									
								
								.github/styles/Google/Units.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,7 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Put a nonbreaking space between the number and the unit in '%s'." |  | ||||||
| link: 'https://developers.google.com/style/units-of-measure' |  | ||||||
| nonword: true |  | ||||||
| level: error |  | ||||||
| tokens: |  | ||||||
|   - \d+(?:GB|TB|MB) |  | ||||||
							
								
								
									
										7
									
								
								.github/styles/Google/Will.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,7 +0,0 @@ | |||||||
| extends: existence |  | ||||||
| message: "Avoid using '%s'." |  | ||||||
| link: 'https://developers.google.com/style/tense' |  | ||||||
| ignorecase: true |  | ||||||
| level: warning |  | ||||||
| tokens: |  | ||||||
|   - will |  | ||||||
							
								
								
									
										79
									
								
								.github/styles/Google/WordList.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,79 +0,0 @@ | |||||||
| extends: substitution |  | ||||||
| message: "Use %s instead of '%s'." |  | ||||||
| link: 'https://developers.google.com/style/word-list' |  | ||||||
| level: warning |  | ||||||
| ignorecase: false |  | ||||||
| swap: |  | ||||||
|   '(?:API Console|dev|developer) key': "'API key'" |  | ||||||
|   '(?:cell ?phone|smart ?phone)': "'phone' or 'mobile phone'" |  | ||||||
|   '(?:dev|developer|APIs) console': "'API console'" |  | ||||||
|   '(?:e-mail|Email|E-mail)':  "'email'" |  | ||||||
|   '(?:file ?path|path ?name)':  "'path'" |  | ||||||
|   '(?:kill|terminate)': "'stop', 'exit', 'cancel', or 'end'" |  | ||||||
|   '(?:OAuth ?2|Oauth)': "'OAuth 2.0'" |  | ||||||
|   '(?:ok|Okay)': "'OK' or 'okay'" |  | ||||||
|   '(?:WiFi|wifi)': "'Wi-Fi'" |  | ||||||
|   '[\.]+apk': "'APK'" |  | ||||||
|   '3\-D': "'3D'" |  | ||||||
|   'Google (?:I\-O|IO)': "'Google I/O'" |  | ||||||
|   'tap (?:&|and) hold': "'touch & hold'" |  | ||||||
|   'un(?:check|select)': "'clear'" |  | ||||||
|   abort: "'stop', 'exit', 'cancel' or 'end'" |  | ||||||
|   above: "'preceding'" |  | ||||||
|   account name: "'username'" |  | ||||||
|   action bar: "'app bar'" |  | ||||||
|   admin: "'administrator'" |  | ||||||
|   Ajax: "'AJAX'" |  | ||||||
|   Android device: "'Android-powered device'" |  | ||||||
|   android: "'Android'" |  | ||||||
|   API explorer: "'APIs Explorer'" |  | ||||||
|   application: "'app'" |  | ||||||
|   approx\.: "'approximately'" |  | ||||||
|   authN: "'authentication'" |  | ||||||
|   authZ: "'authorization'" |  | ||||||
|   autoupdate: "'automatically update'" |  | ||||||
|   cellular data: "'mobile data'" |  | ||||||
|   cellular network: "'mobile network'" |  | ||||||
|   chapter: "'documents', 'pages', 'sections'" |  | ||||||
|   check box: "'checkbox'" |  | ||||||
|   check: "'select'" |  | ||||||
|   CLI: "'command-line tool'" |  | ||||||
|   click on: "'click' or 'click in'" |  | ||||||
|   Cloud: "'Google Cloud Platform' or 'GCP'" |  | ||||||
|   Container Engine: "'Kubernetes Engine'" |  | ||||||
|   content type: "'media type'" |  | ||||||
|   curated roles: "'predefined roles'" |  | ||||||
|   data are: "'data is'" |  | ||||||
|   Developers Console: "'Google API Console' or 'API Console'" |  | ||||||
|   disabled?: "'turn off' or 'off'" |  | ||||||
|   ephemeral IP address: "'ephemeral external IP address'" |  | ||||||
|   fewer data: "'less data'" |  | ||||||
|   file name: "'filename'" |  | ||||||
|   firewalls: "'firewall rules'" |  | ||||||
|   functionality: "'capability' or 'feature'" |  | ||||||
|   Google account: "'Google Account'" |  | ||||||
|   Google accounts: "'Google Accounts'" |  | ||||||
|   Googling: "'search with Google'" |  | ||||||
|   grayed-out: "'unavailable'" |  | ||||||
|   HTTPs: "'HTTPS'" |  | ||||||
|   in order to: "'to'" |  | ||||||
|   ingest: "'import' or 'load'" |  | ||||||
|   k8s: "'Kubernetes'" |  | ||||||
|   long press: "'touch & hold'" |  | ||||||
|   network IP address: "'internal IP address'" |  | ||||||
|   omnibox: "'address bar'" |  | ||||||
|   open-source: "'open source'" |  | ||||||
|   overview screen: "'recents screen'" |  | ||||||
|   regex: "'regular expression'" |  | ||||||
|   SHA1: "'SHA-1' or 'HAS-SHA1'" |  | ||||||
|   sign into: "'sign in to'" |  | ||||||
|   sign-?on: "'single sign-on'" |  | ||||||
|   static IP address: "'static external IP address'" |  | ||||||
|   stylesheet: "'style sheet'" |  | ||||||
|   synch: "'sync'" |  | ||||||
|   tablename: "'table name'" |  | ||||||
|   tablet: "'device'" |  | ||||||
|   touch: "'tap'" |  | ||||||
|   url:  "'URL'" |  | ||||||
|   vs\.: "'versus'" |  | ||||||
|   World Wide Web: "'web'" |  | ||||||
							
								
								
									
										16
									
								
								.github/styles/Google/meta.json
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,16 +0,0 @@ | |||||||
| { |  | ||||||
|   "author": "Joseph Kato", |  | ||||||
|   "description": "A Vale-compatible implementation of the Microsoft Writing Style Guide.", |  | ||||||
|   "email": "support@errata.ai", |  | ||||||
|   "lang": "en", |  | ||||||
|   "url": "https://github.com/errata-ai/Google/releases/latest/download/Google.zip", |  | ||||||
|   "feed": "https://github.com/errata-ai/Google/releases.atom", |  | ||||||
|   "issues": "https://github.com/errata-ai/Google/issues/new", |  | ||||||
|   "license": "MIT", |  | ||||||
|   "name": "Google", |  | ||||||
|   "sources": [ |  | ||||||
|     "https://developers.google.com/style/" |  | ||||||
|   ], |  | ||||||
|   "vale_version": ">=1.0.0", |  | ||||||
|   "coverage": 0.0 |  | ||||||
| } |  | ||||||
							
								
								
									
										0
									
								
								.github/styles/Google/vocab.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
							
								
								
									
										9
									
								
								.github/styles/VyOS/Terminology.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,9 +0,0 @@ | |||||||
| extends: substitution |  | ||||||
| message: Prefer '%s' over '%s' |  | ||||||
| ignorecase: false |  | ||||||
| level: error |  | ||||||
| swap: |  | ||||||
|   vyos: VyOS |  | ||||||
|   Vyos: VyOS |  | ||||||
|   VYOS: VyOS |  | ||||||
|   Gre: GRE |  | ||||||
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -5,6 +5,7 @@ _build/ | |||||||
| venv/ | venv/ | ||||||
| ENV/ | ENV/ | ||||||
| .venv | .venv | ||||||
|  | Pipfile.lock | ||||||
| 
 | 
 | ||||||
| # put various editor ignores here | # put various editor ignores here | ||||||
| .vscode/ | .vscode/ | ||||||
|  | |||||||
| @ -4,6 +4,10 @@ | |||||||
| 
 | 
 | ||||||
| # Required | # Required | ||||||
| version: 2 | version: 2 | ||||||
|  | build: | ||||||
|  |   os: ubuntu-22.04 | ||||||
|  |   tools: | ||||||
|  |     python: "3.10" | ||||||
| 
 | 
 | ||||||
| # Build documentation in the docs/ directory with Sphinx | # Build documentation in the docs/ directory with Sphinx | ||||||
| sphinx: | sphinx: | ||||||
| @ -14,14 +18,13 @@ sphinx: | |||||||
| #  configuration: mkdocs.yml | #  configuration: mkdocs.yml | ||||||
| 
 | 
 | ||||||
| # Optionally build your docs in additional formats such as PDF | # Optionally build your docs in additional formats such as PDF | ||||||
| formats: | #formats: | ||||||
|   - pdf | #  - pdf | ||||||
| 
 | 
 | ||||||
| # Optionally set the version of Python and requirements required to build your docs | # Optionally set the version of Python and requirements required to build your docs | ||||||
| python: | python: | ||||||
|   version: 3.7 |  | ||||||
|   install: |   install: | ||||||
|     - requirements: requirements.txt |     - requirements: requirements.txt | ||||||
| 
 | 
 | ||||||
| submodules: | submodules: | ||||||
|   include: all |   include: all | ||||||
|  | |||||||
							
								
								
									
										866
									
								
								.tx/config
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,866 @@ | |||||||
|  | [main] | ||||||
|  | host = https://www.transifex.com | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_coverage] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/coverage.po | ||||||
|  | source_file = docs/_build/gettext/coverage.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_cli] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/cli.po | ||||||
|  | source_file = docs/_build/gettext/cli.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_copyright] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/copyright.po | ||||||
|  | source_file = docs/_build/gettext/copyright.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_quick-start] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/quick-start.po | ||||||
|  | source_file = docs/_build/gettext/quick-start.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_debugging] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/debugging.po | ||||||
|  | source_file = docs/_build/gettext/debugging.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/index.po | ||||||
|  | source_file = docs/_build/gettext/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_documentation] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/documentation.po | ||||||
|  | source_file = docs/_build/gettext/documentation.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_testing] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/testing.po | ||||||
|  | source_file = docs/_build/gettext/testing.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_404] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/404.po | ||||||
|  | source_file = docs/_build/gettext/404.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_operation_information] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/operation/information.po | ||||||
|  | source_file = docs/_build/gettext/operation/information.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_operation_password-recovery] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/operation/password-recovery.po | ||||||
|  | source_file = docs/_build/gettext/operation/password-recovery.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_operation_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/operation/index.po | ||||||
|  | source_file = docs/_build/gettext/operation/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_operation_raid] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/operation/raid.po | ||||||
|  | source_file = docs/_build/gettext/operation/raid.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_operation_boot-options] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/operation/boot-options.po | ||||||
|  | source_file = docs/_build/gettext/operation/boot-options.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/index.po | ||||||
|  | source_file = docs/_build/gettext/configuration/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_zonepolicy_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/zonepolicy/index.po | ||||||
|  | source_file = docs/_build/gettext/configuration/zonepolicy/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_vpn_dmvpn] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/vpn/dmvpn.po | ||||||
|  | source_file = docs/_build/gettext/configuration/vpn/dmvpn.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_vpn_openconnect] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/vpn/openconnect.po | ||||||
|  | source_file = docs/_build/gettext/configuration/vpn/openconnect.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_vpn_site2site_ipsec] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/vpn/site2site_ipsec.po | ||||||
|  | source_file = docs/_build/gettext/configuration/vpn/site2site_ipsec.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_vpn_rsa-keys] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/vpn/rsa-keys.po | ||||||
|  | source_file = docs/_build/gettext/configuration/vpn/rsa-keys.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_vpn_sstp] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/vpn/sstp.po | ||||||
|  | source_file = docs/_build/gettext/configuration/vpn/sstp.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_vpn_ipsec] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/vpn/ipsec.po | ||||||
|  | source_file = docs/_build/gettext/configuration/vpn/ipsec.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_vpn_pptp] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/vpn/pptp.po | ||||||
|  | source_file = docs/_build/gettext/configuration/vpn/pptp.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_vpn_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/vpn/index.po | ||||||
|  | source_file = docs/_build/gettext/configuration/vpn/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_vpn_l2tp] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/vpn/l2tp.po | ||||||
|  | source_file = docs/_build/gettext/configuration/vpn/l2tp.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_nat_nptv6] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/nat/nptv6.po | ||||||
|  | source_file = docs/_build/gettext/configuration/nat/nptv6.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_nat_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/nat/index.po | ||||||
|  | source_file = docs/_build/gettext/configuration/nat/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_loadbalancing_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/loadbalancing/index.po | ||||||
|  | source_file = docs/_build/gettext/configuration/loadbalancing/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_firewall_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/firewall/index.po | ||||||
|  | source_file = docs/_build/gettext/configuration/firewall/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_flow-accounting] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/flow-accounting.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/flow-accounting.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_lcd] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/lcd.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/lcd.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_host-name] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/host-name.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/host-name.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_syslog] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/syslog.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/syslog.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_proxy] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/proxy.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/proxy.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_time-zone] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/time-zone.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/time-zone.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_name-server] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/name-server.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/name-server.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_task-scheduler] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/task-scheduler.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/task-scheduler.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_ip] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/ip.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/ip.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_console] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/console.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/console.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_option] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/option.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/option.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_conntrack] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/conntrack.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/conntrack.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/index.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_ipv6] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/ipv6.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/ipv6.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_eventhandler] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/eventhandler.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/eventhandler.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_acceleration] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/acceleration.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/acceleration.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_ntp] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/ntp.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/ntp.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_default-route] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/default-route.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/default-route.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_system_login] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/system/login.po | ||||||
|  | source_file = docs/_build/gettext/configuration/system/login.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_highavailability_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/highavailability/index.po | ||||||
|  | source_file = docs/_build/gettext/configuration/highavailability/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_vrf_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/vrf/index.po | ||||||
|  | source_file = docs/_build/gettext/configuration/vrf/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_trafficpolicy_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/trafficpolicy/index.po | ||||||
|  | source_file = docs/_build/gettext/configuration/trafficpolicy/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_lldp] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/lldp.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/lldp.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_salt-minion] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/salt-minion.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/salt-minion.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_mdns] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/mdns.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/mdns.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_ipoe-server] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/ipoe-server.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/ipoe-server.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_conntrack-sync] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/conntrack-sync.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/conntrack-sync.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_broadcast-relay] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/broadcast-relay.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/broadcast-relay.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_dhcp-relay] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/dhcp-relay.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/dhcp-relay.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_tftp-server] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/tftp-server.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/tftp-server.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_ssh] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/ssh.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/ssh.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_router-advert] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/router-advert.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/router-advert.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_pppoe-server] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/pppoe-server.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/pppoe-server.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_snmp] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/snmp.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/snmp.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_webproxy] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/webproxy.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/webproxy.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_https] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/https.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/https.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_dhcp-server] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/dhcp-server.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/dhcp-server.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/index.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_console-server] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/console-server.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/console-server.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_service_dns] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/service/dns.po | ||||||
|  | source_file = docs/_build/gettext/configuration/service/dns.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_protocols_rip] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/protocols/rip.po | ||||||
|  | source_file = docs/_build/gettext/configuration/protocols/rip.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_protocols_rpki] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/protocols/rpki.po | ||||||
|  | source_file = docs/_build/gettext/configuration/protocols/rpki.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_protocols_bgp] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/protocols/bgp.po | ||||||
|  | source_file = docs/_build/gettext/configuration/protocols/bgp.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_protocols_bfd] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/protocols/bfd.po | ||||||
|  | source_file = docs/_build/gettext/configuration/protocols/bfd.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_protocols_mpls] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/protocols/mpls.po | ||||||
|  | source_file = docs/_build/gettext/configuration/protocols/mpls.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_protocols_ospf] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/protocols/ospf.po | ||||||
|  | source_file = docs/_build/gettext/configuration/protocols/ospf.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_protocols_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/protocols/index.po | ||||||
|  | source_file = docs/_build/gettext/configuration/protocols/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_protocols_igmp] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/protocols/igmp.po | ||||||
|  | source_file = docs/_build/gettext/configuration/protocols/igmp.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_protocols_static] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/protocols/static.po | ||||||
|  | source_file = docs/_build/gettext/configuration/protocols/static.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_protocols_isis] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/protocols/isis.po | ||||||
|  | source_file = docs/_build/gettext/configuration/protocols/isis.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_policy_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/policy/index.po | ||||||
|  | source_file = docs/_build/gettext/configuration/policy/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_wireguard] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/wireguard.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/wireguard.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_geneve] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/geneve.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/geneve.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_loopback] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/loopback.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/loopback.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_l2tpv3] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/l2tpv3.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/l2tpv3.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_ethernet] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/ethernet.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/ethernet.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_vti] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/vti.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/vti.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_pppoe] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/pppoe.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/pppoe.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_bonding] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/bonding.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/bonding.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_pseudo-ethernet] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/pseudo-ethernet.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/pseudo-ethernet.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_macsec] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/macsec.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/macsec.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_bridge] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/bridge.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/bridge.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_dummy] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/dummy.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/dummy.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_tunnel] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/tunnel.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/tunnel.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_wwan] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/wwan.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/wwan.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/index.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_wireless] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/wireless.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/wireless.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_vxlan] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/vxlan.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/vxlan.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configuration_interfaces_openvpn] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configuration/interfaces/openvpn.po | ||||||
|  | source_file = docs/_build/gettext/configuration/interfaces/openvpn.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_changelog_1] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/changelog/1.po | ||||||
|  | source_file = docs/_build/gettext/changelog/1.3.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_changelog_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/changelog/index.po | ||||||
|  | source_file = docs/_build/gettext/changelog/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_contributing_issues-features] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/contributing/issues-features.po | ||||||
|  | source_file = docs/_build/gettext/contributing/issues-features.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_contributing_build-vyos] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/contributing/build-vyos.po | ||||||
|  | source_file = docs/_build/gettext/contributing/build-vyos.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_contributing_development] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/contributing/development.po | ||||||
|  | source_file = docs/_build/gettext/contributing/development.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_contributing_upstream-packages] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/contributing/upstream-packages.po | ||||||
|  | source_file = docs/_build/gettext/contributing/upstream-packages.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_contributing_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/contributing/index.po | ||||||
|  | source_file = docs/_build/gettext/contributing/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_introducing_about] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/introducing/about.po | ||||||
|  | source_file = docs/_build/gettext/introducing/about.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_introducing_history] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/introducing/history.po | ||||||
|  | source_file = docs/_build/gettext/introducing/history.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_image] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/image.po | ||||||
|  | source_file = docs/_build/gettext/installation/image.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_vyos-on-baremetal] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/vyos-on-baremetal.po | ||||||
|  | source_file = docs/_build/gettext/installation/vyos-on-baremetal.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_migrate-from-vyatta] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/migrate-from-vyatta.po | ||||||
|  | source_file = docs/_build/gettext/installation/migrate-from-vyatta.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/index.po | ||||||
|  | source_file = docs/_build/gettext/installation/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_install] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/install.po | ||||||
|  | source_file = docs/_build/gettext/installation/install.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_update] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/update.po | ||||||
|  | source_file = docs/_build/gettext/installation/update.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_virtual_gns3] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/virtual/gns3.po | ||||||
|  | source_file = docs/_build/gettext/installation/virtual/gns3.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_virtual_eve-ng] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/virtual/eve-ng.po | ||||||
|  | source_file = docs/_build/gettext/installation/virtual/eve-ng.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_virtual_proxmox] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/virtual/proxmox.po | ||||||
|  | source_file = docs/_build/gettext/installation/virtual/proxmox.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_virtual_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/virtual/index.po | ||||||
|  | source_file = docs/_build/gettext/installation/virtual/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_virtual_libvirt] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/virtual/libvirt.po | ||||||
|  | source_file = docs/_build/gettext/installation/virtual/libvirt.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_virtual_vmware] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/virtual/vmware.po | ||||||
|  | source_file = docs/_build/gettext/installation/virtual/vmware.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_cloud_azure] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/cloud/azure.po | ||||||
|  | source_file = docs/_build/gettext/installation/cloud/azure.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_cloud_gcp] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/cloud/gcp.po | ||||||
|  | source_file = docs/_build/gettext/installation/cloud/gcp.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_cloud_aws] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/cloud/aws.po | ||||||
|  | source_file = docs/_build/gettext/installation/cloud/aws.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_cloud_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/cloud/index.po | ||||||
|  | source_file = docs/_build/gettext/installation/cloud/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_installation_cloud_oracel] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/installation/cloud/oracel.po | ||||||
|  | source_file = docs/_build/gettext/installation/cloud/oracel.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_troubleshooting_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/troubleshooting/index.po | ||||||
|  | source_file = docs/_build/gettext/troubleshooting/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_automation_vyos-napalm] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/automation/vyos-napalm.po | ||||||
|  | source_file = docs/_build/gettext/automation/vyos-napalm.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_automation_command-scripting] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/automation/command-scripting.po | ||||||
|  | source_file = docs/_build/gettext/automation/command-scripting.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_automation_vyos-api] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/automation/vyos-api.po | ||||||
|  | source_file = docs/_build/gettext/automation/vyos-api.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_automation_vyos-netmiko] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/automation/vyos-netmiko.po | ||||||
|  | source_file = docs/_build/gettext/automation/vyos-netmiko.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_automation_cloud-init] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/automation/cloud-init.po | ||||||
|  | source_file = docs/_build/gettext/automation/cloud-init.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_automation_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/automation/index.po | ||||||
|  | source_file = docs/_build/gettext/automation/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_automation_vyos-ansible] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/automation/vyos-ansible.po | ||||||
|  | source_file = docs/_build/gettext/automation/vyos-ansible.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configexamples_azure-vpn-dual-bgp] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configexamples/azure-vpn-dual-bgp.po | ||||||
|  | source_file = docs/_build/gettext/configexamples/azure-vpn-dual-bgp.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configexamples_azure-vpn-bgp] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configexamples/azure-vpn-bgp.po | ||||||
|  | source_file = docs/_build/gettext/configexamples/azure-vpn-bgp.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configexamples_dual-hub-dmvpn] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configexamples/dual-hub-dmvpn.po | ||||||
|  | source_file = docs/_build/gettext/configexamples/dual-hub-dmvpn.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configexamples_zone-policy] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configexamples/zone-policy.po | ||||||
|  | source_file = docs/_build/gettext/configexamples/zone-policy.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configexamples_bgp-ipv6-unnumbered] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configexamples/bgp-ipv6-unnumbered.po | ||||||
|  | source_file = docs/_build/gettext/configexamples/bgp-ipv6-unnumbered.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configexamples_ha] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configexamples/ha.po | ||||||
|  | source_file = docs/_build/gettext/configexamples/ha.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configexamples_wan-load-balancing] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configexamples/wan-load-balancing.po | ||||||
|  | source_file = docs/_build/gettext/configexamples/wan-load-balancing.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configexamples_index] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configexamples/index.po | ||||||
|  | source_file = docs/_build/gettext/configexamples/index.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configexamples_ospf-unnumbered] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configexamples/ospf-unnumbered.po | ||||||
|  | source_file = docs/_build/gettext/configexamples/ospf-unnumbered.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configexamples_autotest_DHCPRelay_through_GRE_DHCPRelay_through_GRE] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configexamples/autotest/DHCPRelay_through_GRE/DHCPRelay_through_GRE.po | ||||||
|  | source_file = docs/_build/gettext/configexamples/autotest/DHCPRelay_through_GRE/DHCPRelay_through_GRE.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configexamples_autotest_tunnelbroker_tunnelbroker] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configexamples/autotest/tunnelbroker/tunnelbroker.po | ||||||
|  | source_file = docs/_build/gettext/configexamples/autotest/tunnelbroker/tunnelbroker.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
|  | 
 | ||||||
|  | [documentation-1-3.docs__build_gettext_configexamples_autotest_Wireguard_Wireguard] | ||||||
|  | file_filter = locale/<lang>/LC_MESSAGES/configexamples/autotest/Wireguard/Wireguard.po | ||||||
|  | source_file = docs/_build/gettext/configexamples/autotest/Wireguard/Wireguard.pot | ||||||
|  | source_lang = en | ||||||
|  | type = PO | ||||||
							
								
								
									
										2
									
								
								Pipfile
									
									
									
									
									
								
							
							
						
						| @ -9,6 +9,8 @@ docutils = "*" | |||||||
| lxml = "*" | lxml = "*" | ||||||
| sphinx-notfound-page = "*" | sphinx-notfound-page = "*" | ||||||
| Sphinx = ">=1.4.3" | Sphinx = ">=1.4.3" | ||||||
|  | sphinx-panels = "*" | ||||||
|  | transifex-client = "*" | ||||||
| 
 | 
 | ||||||
| [dev-packages] | [dev-packages] | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										38
									
								
								README.md
									
									
									
									
									
								
							
							
						
						| @ -1,25 +1,32 @@ | |||||||
| Starting with VyOS 1.2 (`crux`) documentation is being migrated from the old wiki | Starting with VyOS 1.2 (`crux`) our documentation is being migrated from the old wiki | ||||||
| to ReadTheDocs. Documentation can be accessed via the following URL: | to ReadTheDocs. Documentation can be accessed via the following URL: https://docs.vyos.io | ||||||
| 
 | 
 | ||||||
| * https://docs.vyos.io | Our old WiKi can still be accessed from the | ||||||
|  | [Wayback Machine](https://web.archive.org/web/20200225171529/https://wiki.vyos.net/wiki/Main_Page) | ||||||
| 
 | 
 | ||||||
| # Build | # Build | ||||||
| 
 | 
 | ||||||
| [](https://docs.vyos.io/en/latest/?badge=latest) | [](https://docs.vyos.io/en/latest/?badge=equuleus) | ||||||
| 
 | 
 | ||||||
| ## Native | # Versions | ||||||
| 
 | 
 | ||||||
| To build the manual, run the following commands inside the `docs` folder: | Our version follows the very same branching scheme as the VyOS source modules | ||||||
|  | itself. We maintain one documentation branch per VyOS release. The default | ||||||
|  | branch that contains the most recent VyOS documentation is called `master` | ||||||
|  | and matches the latest VyOS release which is 1.4 at the time. | ||||||
| 
 | 
 | ||||||
| * `make html` for an HTML manual | All new documentation enhancements go to the `master` branch. If those changes | ||||||
| * `make latexpdf` for a LaTeX rendered PDF | are beneficial for previous VyOS documentation versions they will be | ||||||
|  | cherry-picked to the appropriate branch(es). | ||||||
| 
 | 
 | ||||||
| Required Debian Packages: | Post-1.2.0 branches are named after constellations sorted by area from smallest to | ||||||
| * `latexmk` | largest. There are 88 of them, here's the | ||||||
| * `texlive-latex-recommended` | [complete list](https://en.wikipedia.org/wiki/IAU_designated_constellations_by_area). | ||||||
| * `texlive-fonts-recommended` | 
 | ||||||
| * `texlive-latex-extra` | * 1.2.x: `crux` (Southern Cross) | ||||||
| * `sphinx` | * 1.3.x: `equuleus` (Little Horse) | ||||||
|  | * 1.4.x: `sagitta` (Arrow) | ||||||
|  | * ... | ||||||
| 
 | 
 | ||||||
| ### sphinx | ### sphinx | ||||||
| Debian requires some extra steps for | Debian requires some extra steps for | ||||||
| @ -55,7 +62,6 @@ Then run: | |||||||
| sudo pip install sphinx-rtd-theme | sudo pip install sphinx-rtd-theme | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| Do the following to build the HTML and start a webserver: | Do the following to build the HTML and start a webserver: | ||||||
| * Run `make livehtml` inside the `docs` folder | * Run `make livehtml` inside the `docs` folder | ||||||
| 
 | 
 | ||||||
| @ -94,7 +100,7 @@ $ docker run --rm -it -p 8000:8000 -v "$(pwd)":/vyos -w /vyos/docs -e \ | |||||||
| 
 | 
 | ||||||
| ### Test the docs | ### Test the docs | ||||||
| 
 | 
 | ||||||
| Discuss in this Phabricator task: [T1731](https://phabricator.vyos.net/T1731) | Discuss in this Phabricator task: [T1731](https://vyos.dev/T1731) | ||||||
| 
 | 
 | ||||||
| To test all files run: | To test all files run: | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -34,6 +34,8 @@ RUN pip3 install sphinx-rtd-theme | |||||||
| RUN pip3 install sphinx-autobuild | RUN pip3 install sphinx-autobuild | ||||||
| RUN pip3 install sphinx-notfound-page | RUN pip3 install sphinx-notfound-page | ||||||
| RUN pip3 install lxml | RUN pip3 install lxml | ||||||
|  | RUN pip3 install myst-parser | ||||||
|  | RUN pip3 install sphinx-panels | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # Cleanup | # Cleanup | ||||||
| @ -45,8 +47,6 @@ EXPOSE 8000 | |||||||
| RUN sed "s/^%sudo.*/%sudo\tALL=(ALL) NOPASSWD:ALL/g" -i /etc/sudoers && \ | RUN sed "s/^%sudo.*/%sudo\tALL=(ALL) NOPASSWD:ALL/g" -i /etc/sudoers && \ | ||||||
|     chmod a+s /usr/sbin/useradd /usr/sbin/groupadd /usr/sbin/gosu /usr/sbin/usermod |     chmod a+s /usr/sbin/useradd /usr/sbin/groupadd /usr/sbin/gosu /usr/sbin/usermod | ||||||
| 
 | 
 | ||||||
| # vale |  | ||||||
| RUN curl -sfL https://install.goreleaser.com/github.com/ValeLint/vale.sh | sh -s v1.7.1 |  | ||||||
| 
 | 
 | ||||||
| COPY entrypoint.sh /usr/local/bin/entrypoint.sh | COPY entrypoint.sh /usr/local/bin/entrypoint.sh | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -7,4 +7,5 @@ Sorry, We could not find a page. | |||||||
| Try using the search box or go to the release homepage: | Try using the search box or go to the release homepage: | ||||||
| 
 | 
 | ||||||
|   * `1.2.x (crux) <https://docs.vyos.io/en/crux/>`_ |   * `1.2.x (crux) <https://docs.vyos.io/en/crux/>`_ | ||||||
|   * `rolling release (equuleus) <https://docs.vyos.io/en/latest/>`_ |   * `1.3.x (equuleus) <https://docs.vyos.io/en/equuleus/>`_ | ||||||
|  |   * `rolling release (sagitta) <https://docs.vyos.io/en/latest/>`_ | ||||||
|  | |||||||
| @ -27,3 +27,7 @@ livehtml: | |||||||
| 	sphinx-autobuild --host $(AUTOHOST) --port $(AUTOPORT) $(AUTOOPTS) \
 | 	sphinx-autobuild --host $(AUTOHOST) --port $(AUTOPORT) $(AUTOOPTS) \
 | ||||||
| 		"$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) | 		"$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | defaultvalue: export VYOS_DEFAULT=True | ||||||
|  | defaultvalue:	 | ||||||
|  | 	@$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) | ||||||
							
								
								
									
										108
									
								
								docs/_ext/releasenotes.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,108 @@ | |||||||
|  | from datetime import datetime | ||||||
|  | from phabricator import Phabricator | ||||||
|  | import argparse | ||||||
|  | 
 | ||||||
|  | parser = argparse.ArgumentParser() | ||||||
|  | parser.add_argument("-t", "--token", type=str, help="API token", required=True) | ||||||
|  | parser.add_argument("-b", "--branch", nargs="+", help="List of github branches", required=True) | ||||||
|  | 
 | ||||||
|  | args = parser.parse_args() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | phab = Phabricator(host='https://vyos.dev/api/', token=args.token) | ||||||
|  | 
 | ||||||
|  | ''' | ||||||
|  | # code to find new PHIDs | ||||||
|  | # show project ids | ||||||
|  | projects = phab.project.query(limit=200) | ||||||
|  | for project in projects.response['data']: | ||||||
|  |     print(projects.response['data'][project]['phid'], projects.response['data'][project]['name']) | ||||||
|  | ''' | ||||||
|  | 
 | ||||||
|  | projects = { | ||||||
|  |     'equuleus': { | ||||||
|  |         'phid': 'PHID-PROJ-zu26ui4vbmvykpjtepij', | ||||||
|  |         'name': '1.3 Equuleus', | ||||||
|  |         'filename': 'docs/changelog/1.3.rst', | ||||||
|  |         'tasks': [], | ||||||
|  |         'releasenotes': [] | ||||||
|  |     }, | ||||||
|  |     'current': { | ||||||
|  |         'phid': 'PHID-PROJ-m4utvy456e2shcprpq3b', | ||||||
|  |         'name': '1.4 Sagitta', | ||||||
|  |         'filename': 'docs/changelog/1.4.rst', | ||||||
|  |         'tasks': [], | ||||||
|  |         'releasenotes': [] | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | for b in args.branch: | ||||||
|  |     if b not in projects.keys(): | ||||||
|  |         raise Exception('given branch not defined') | ||||||
|  | 
 | ||||||
|  | # get project tasks | ||||||
|  | 
 | ||||||
|  | for project in projects: | ||||||
|  |     if project not in args.branch: | ||||||
|  |         continue | ||||||
|  | 
 | ||||||
|  |     _after = None | ||||||
|  | 
 | ||||||
|  |     # get tasks from API | ||||||
|  |     while True: | ||||||
|  |         #print(f'get {_after}') | ||||||
|  |         _tasks = phab.maniphest.search( | ||||||
|  |             constraints={ | ||||||
|  |                 'projects': [projects[project]['phid']], | ||||||
|  |                 #'statuses': ['closed'], | ||||||
|  |             }, | ||||||
|  |             after=_after) | ||||||
|  | 
 | ||||||
|  |         projects[project]['tasks'].extend(_tasks.response['data']) | ||||||
|  |         _after = _tasks.response['cursor']['after'] | ||||||
|  |         if _after is None: | ||||||
|  |             break | ||||||
|  |      | ||||||
|  |     # prepare tasks for release notes | ||||||
|  |     for task in projects[project]['tasks']: | ||||||
|  |         if task['fields']['status']['value'] in ['resolved']: | ||||||
|  |             #_info = phab.maniphest.info(task_id=task['id']) | ||||||
|  |             #_info = _info.response | ||||||
|  |             releasenote = {} | ||||||
|  |             releasenote['type'] = task['fields']['subtype'] | ||||||
|  |             date = datetime.fromtimestamp(task['fields']['dateClosed']) | ||||||
|  |             releasenote['closedate'] = date.strftime('%Y-%m-%d') | ||||||
|  |             releasenote['name'] = task['fields']['name'] | ||||||
|  |             releasenote['id'] = task['id'] | ||||||
|  |             #print(f"{project}: {task['fields']['status']} {task['id']}") | ||||||
|  |             projects[project]['releasenotes'].append(releasenote) | ||||||
|  |      | ||||||
|  |     projects[project]['releasenotes'] = sorted( | ||||||
|  |                 projects[project]['releasenotes'], key = lambda x: x['closedate'], | ||||||
|  |                 reverse=True | ||||||
|  |     ) | ||||||
|  |      | ||||||
|  |     rst_text = "#" * len(projects[project]['name']) | ||||||
|  |     rst_text += f"\n{projects[project]['name']}\n" | ||||||
|  |     rst_text += "#" * len(projects[project]['name']) | ||||||
|  |     rst_text += "\n" | ||||||
|  | 
 | ||||||
|  |     rst_text += "\n" | ||||||
|  |     rst_text += "..\n" | ||||||
|  |     rst_text += "   Please don't add anything by hand.\n" | ||||||
|  |     rst_text += "   This file is managed by the script:\n" | ||||||
|  |     rst_text += "   _ext/releasenotes.py\n" | ||||||
|  | 
 | ||||||
|  |     date = None | ||||||
|  |     for rn in projects[project]['releasenotes']: | ||||||
|  |         if date != rn['closedate']: | ||||||
|  |             rst_text += "\n\n" | ||||||
|  |             rst_text += f"{rn['closedate']}\n" | ||||||
|  |             underline = '=' * len(rn['closedate']) | ||||||
|  |             rst_text += f"{underline}\n\n" | ||||||
|  |         date = rn['closedate'] | ||||||
|  |         rst_text += f"* :vytask:`T{rn['id']}` ({rn['type']}): {rn['name']}\n" | ||||||
|  |      | ||||||
|  |     f = open(projects[project]['filename'], "w") | ||||||
|  |     f.write(rst_text) | ||||||
|  |     f.close() | ||||||
| @ -1,14 +1,13 @@ | |||||||
| ''' | ''' | ||||||
| generate json with all commands from xml for vyos documentation coverage | generate json with all commands from xml for vyos documentation coverage | ||||||
| 
 |  | ||||||
| ''' | ''' | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| import sys | import sys | ||||||
| import os | import os | ||||||
| import json | import json | ||||||
| import re | import re | ||||||
| import logging | import logging | ||||||
|  | import datetime | ||||||
| 
 | 
 | ||||||
| from io import BytesIO | from io import BytesIO | ||||||
| from lxml import etree as ET | from lxml import etree as ET | ||||||
| @ -33,11 +32,32 @@ input_data = [ | |||||||
|     } |     } | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | vyos_commands_dir = "_include/coverage" | ||||||
|  | 
 | ||||||
| node_data = { | node_data = { | ||||||
|     'cfgcmd': {}, |     'cfgcmd': {}, | ||||||
|     'opcmd': {}, |     'opcmd': {}, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | def get_vyos_commands(): | ||||||
|  |     return_data = None | ||||||
|  |     for (dirpath, dirnames, filenames) in os.walk(vyos_commands_dir): | ||||||
|  |         for file in filenames: | ||||||
|  |             with open(f"{vyos_commands_dir}/{file}") as f: | ||||||
|  |                 data = json.load(f) | ||||||
|  |              | ||||||
|  |             if not return_data: | ||||||
|  |                 return_data = data | ||||||
|  |              | ||||||
|  |             # find latestes export | ||||||
|  |             if datetime.datetime.fromisoformat(return_data['date']) < datetime.datetime.fromisoformat(data['date']): | ||||||
|  |                 return_data = data | ||||||
|  |      | ||||||
|  |     return return_data | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def get_properties(p): | def get_properties(p): | ||||||
|     props = {} |     props = {} | ||||||
|     props['valueless'] = False |     props['valueless'] = False | ||||||
| @ -155,12 +175,18 @@ def get_properties(p): | |||||||
| 
 | 
 | ||||||
| def process_node(n, f): | def process_node(n, f): | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|     props_elem = n.find("properties") |     props_elem = n.find("properties") | ||||||
|     children = n.find("children") |     children = n.find("children") | ||||||
|     command = n.find("command") |     command = n.find("command") | ||||||
|     children_nodes = [] |     children_nodes = [] | ||||||
|     owner = n.get("owner") |     owner = n.get("owner") | ||||||
|     node_type = n.tag |     node_type = n.tag | ||||||
|  |     defaultvalue = n.find("defaultValue") | ||||||
|  | 
 | ||||||
|  |     if defaultvalue is not None: | ||||||
|  |         defaultvalue = defaultvalue.text | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|     name = n.get("name") |     name = n.get("name") | ||||||
|     props = get_properties(props_elem) |     props = get_properties(props_elem) | ||||||
| @ -198,7 +224,9 @@ def process_node(n, f): | |||||||
|         'children': children_nodes, |         'children': children_nodes, | ||||||
|         'props': props, |         'props': props, | ||||||
|         'command': test_command, |         'command': test_command, | ||||||
|         'filename': f |         'filename': f, | ||||||
|  |         'defaultvalue': defaultvalue | ||||||
|  | 
 | ||||||
|     } |     } | ||||||
|     return node |     return node | ||||||
| 
 | 
 | ||||||
| @ -212,9 +240,11 @@ def create_commands(data, parent_list=[], level=0): | |||||||
|         'tag_help': [], |         'tag_help': [], | ||||||
|         'level': level, |         'level': level, | ||||||
|         'no_childs': False, |         'no_childs': False, | ||||||
|         'filename': None |         'filename': None, | ||||||
|  |         'defaultvalue': None, | ||||||
|     } |     } | ||||||
|     command['filename'] = data['filename'] |     command['filename'] = data['filename'] | ||||||
|  |     command['defaultvalue'] = data['defaultvalue'] | ||||||
|     command['name'].extend(parent_list) |     command['name'].extend(parent_list) | ||||||
|     command['name'].append(data['name']) |     command['name'].append(data['name']) | ||||||
| 
 | 
 | ||||||
| @ -298,7 +328,7 @@ def get_working_commands(): | |||||||
|                 if not validator.validate(xml): |                 if not validator.validate(xml): | ||||||
|                     print(validator.error_log) |                     print(validator.error_log) | ||||||
|                     print("Interface definition file {0} does not match the schema!".format(f)) |                     print("Interface definition file {0} does not match the schema!".format(f)) | ||||||
|                     sys.exit(1) |                     #sys.exit(1) | ||||||
|             except Exception as e: |             except Exception as e: | ||||||
|                 print("Failed to load the XML schema {0}".format(entry['schema_file'])) |                 print("Failed to load the XML schema {0}".format(entry['schema_file'])) | ||||||
|                 print(e) |                 print(e) | ||||||
| @ -328,6 +358,7 @@ def get_working_commands(): | |||||||
|                     'children': [], |                     'children': [], | ||||||
|                     'command': node_data[kind][entry]['command'], |                     'command': node_data[kind][entry]['command'], | ||||||
|                     'filename': node_data[kind][entry]['filename'], |                     'filename': node_data[kind][entry]['filename'], | ||||||
|  |                     'defaultvalue': node_data[kind][entry]['defaultvalue'] | ||||||
|                 } |                 } | ||||||
|             config_tree_new[kind][node_0]['children'].extend(node_data[kind][entry]['children']) |             config_tree_new[kind][node_0]['children'].extend(node_data[kind][entry]['children']) | ||||||
|      |      | ||||||
| @ -337,7 +368,8 @@ def get_working_commands(): | |||||||
|     } |     } | ||||||
|     for kind in  config_tree_new: |     for kind in  config_tree_new: | ||||||
|         for e in config_tree_new[kind]: |         for e in config_tree_new[kind]: | ||||||
|             result[kind].extend(create_commands(config_tree_new[kind][e])) |             if config_tree_new[kind][e]['name']: | ||||||
|  |                 result[kind].extend(create_commands(config_tree_new[kind][e])) | ||||||
|      |      | ||||||
|     for cmd in result['cfgcmd']: |     for cmd in result['cfgcmd']: | ||||||
|         cmd['cmd'] = " ".join(cmd['name']) |         cmd['cmd'] = " ".join(cmd['name']) | ||||||
| @ -377,6 +409,4 @@ def override_element(l: list): | |||||||
|         el.getparent().remove(el) |         el.getparent().remove(el) | ||||||
| 
 | 
 | ||||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||||
|     res = get_working_commands() |     get_vyos_commands() | ||||||
|     print(json.dumps(res)) |  | ||||||
|     #print(res['cfgcmd'][0]) |  | ||||||
|  | |||||||
| @ -1,20 +1,25 @@ | |||||||
| import re | import re | ||||||
| import json | import json | ||||||
| import os | import os | ||||||
|  | from datetime import datetime | ||||||
|  | from unittest import defaultTestLoader | ||||||
| from docutils import io, nodes, utils, statemachine | from docutils import io, nodes, utils, statemachine | ||||||
| from docutils.parsers.rst.roles import set_classes | from docutils.parsers.rst.roles import set_classes | ||||||
| from docutils.parsers.rst import Directive, directives, states | from docutils.parsers.rst import Directive, directives, states | ||||||
| 
 | 
 | ||||||
| from sphinx.util.docutils import SphinxDirective | from sphinx.util.docutils import SphinxDirective | ||||||
| 
 | 
 | ||||||
| from testcoverage import get_working_commands | from testcoverage import get_working_commands, get_vyos_commands | ||||||
| 
 | 
 | ||||||
|  | from sphinx.util import logging | ||||||
|  | 
 | ||||||
|  | logger = logging.getLogger(__name__) | ||||||
| 
 | 
 | ||||||
| def setup(app): | def setup(app): | ||||||
| 
 | 
 | ||||||
|     app.add_config_value( |     app.add_config_value( | ||||||
|         'vyos_phabricator_url', |         'vyos_phabricator_url', | ||||||
|         'https://phabricator.vyos.net/', |         'https://vyos.dev/', | ||||||
|         'html' |         'html' | ||||||
|     ) |     ) | ||||||
| 
 | 
 | ||||||
| @ -24,6 +29,11 @@ def setup(app): | |||||||
|         #{"cfgcmd": [], "opcmd": []}, |         #{"cfgcmd": [], "opcmd": []}, | ||||||
|         'html' |         'html' | ||||||
|     ) |     ) | ||||||
|  |     app.add_config_value( | ||||||
|  |         'vyos_commands', | ||||||
|  |         get_vyos_commands(), | ||||||
|  |         'html' | ||||||
|  |     ) | ||||||
|     app.add_config_value( |     app.add_config_value( | ||||||
|         'vyos_coverage', |         'vyos_coverage', | ||||||
|         { |         { | ||||||
| @ -74,6 +84,7 @@ def setup(app): | |||||||
|     app.add_directive('opcmd', OpCmdDirective) |     app.add_directive('opcmd', OpCmdDirective) | ||||||
|     app.add_directive('cmdinclude', CfgInclude) |     app.add_directive('cmdinclude', CfgInclude) | ||||||
|     app.connect('doctree-resolved', process_cmd_nodes) |     app.connect('doctree-resolved', process_cmd_nodes) | ||||||
|  |     app.connect('doctree-read', handle_document_meta_data) | ||||||
| 
 | 
 | ||||||
| class CfgcmdList(nodes.General, nodes.Element): | class CfgcmdList(nodes.General, nodes.Element): | ||||||
|     pass |     pass | ||||||
| @ -346,6 +357,21 @@ class OpcmdlistDirective(Directive): | |||||||
|         return [oplist] |         return [oplist] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | def get_default_value(title_text, config, cfgmode): | ||||||
|  |     title_text = strip_cmd(title_text) | ||||||
|  |     for cmd in config.vyos_working_commands[cfgmode]: | ||||||
|  |         cmd_joined = ' '.join(cmd['name']) | ||||||
|  |         cmd_striped = strip_cmd(cmd_joined) | ||||||
|  |         if "table-size" in cmd['name']: | ||||||
|  |             pass | ||||||
|  |             #print(cmd) | ||||||
|  |             #print(cmd_striped) | ||||||
|  |             #print(title_text) | ||||||
|  |             #print() | ||||||
|  |         if cmd_striped == title_text: | ||||||
|  |             if cmd['defaultvalue']: | ||||||
|  |                 return cmd['defaultvalue'] | ||||||
|  |     return None | ||||||
| 
 | 
 | ||||||
| class CmdDirective(SphinxDirective): | class CmdDirective(SphinxDirective): | ||||||
| 
 | 
 | ||||||
| @ -358,19 +384,31 @@ class CmdDirective(SphinxDirective): | |||||||
|         content_list = [] |         content_list = [] | ||||||
|         title_text = '' |         title_text = '' | ||||||
|         content_text = '' |         content_text = '' | ||||||
|  |         defaultvalue = None | ||||||
|         has_body = False |         has_body = False | ||||||
| 
 | 
 | ||||||
|         cfgmode = self.custom_class + "cmd" |         cfgmode = self.custom_class + "cmd" | ||||||
|  |         try: | ||||||
|  |             if '' in self.content: | ||||||
|  |                 index = self.content.index('') | ||||||
|  |                 title_list = self.content[0:index] | ||||||
|  |                 content_list = self.content[index + 1:] | ||||||
| 
 | 
 | ||||||
|         if '' in self.content: |                 title_text = ' '.join(title_list) | ||||||
|             index = self.content.index('') |                 content_text = content_text + '\n'.join(content_list) | ||||||
|             title_list = self.content[0:index] |                 has_body = True | ||||||
|             content_list = self.content[index + 1:] |             else: | ||||||
|             title_text = ' '.join(title_list) |                 title_list = self.content | ||||||
|             content_text = '\n'.join(content_list) |                 title_text = ' '.join(title_list) | ||||||
|             has_body = True |         except Exception as e: | ||||||
|         else: |             print("error", e) | ||||||
|             title_text = ' '.join(self.content) | 
 | ||||||
|  |         # render defaultvalue | ||||||
|  |         if os.getenv('VYOS_DEFAULT') or ':defaultvalue:' in title_text: | ||||||
|  |             value = get_default_value(title_list, self.config, cfgmode) | ||||||
|  |             title_text = title_text.replace(":defaultvalue:", '') | ||||||
|  |             if value: | ||||||
|  |                 defaultvalue = f"default: {value}\n" | ||||||
| 
 | 
 | ||||||
|         anchor_id = nodes.make_id(self.custom_class + "cmd-" + title_text) |         anchor_id = nodes.make_id(self.custom_class + "cmd-" + title_text) | ||||||
|         target = nodes.target(ids=[anchor_id]) |         target = nodes.target(ids=[anchor_id]) | ||||||
| @ -392,6 +430,11 @@ class CmdDirective(SphinxDirective): | |||||||
|         heading_element['classes'] += [self.custom_class + 'cmd-heading'] |         heading_element['classes'] += [self.custom_class + 'cmd-heading'] | ||||||
| 
 | 
 | ||||||
|         panel_element.append(heading_element) |         panel_element.append(heading_element) | ||||||
|  |         if defaultvalue: | ||||||
|  |             defaultvalue_element = nodes.paragraph(text=defaultvalue) | ||||||
|  |             defaultvalue_element['classes'] = ["defaultvalue"] | ||||||
|  |             panel_element.append(defaultvalue_element) | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|         append_list = { |         append_list = { | ||||||
|             'docname': self.env.docname, |             'docname': self.env.docname, | ||||||
| @ -432,26 +475,53 @@ class CfgCmdDirective(CmdDirective): | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def strip_cmd(cmd, debug=False): | def strip_cmd(cmd, debug=False): | ||||||
|  | 
 | ||||||
|  |     # find all [...] and also nested [...] | ||||||
|  |     # regex and str.find() had problems with nested [...] | ||||||
|  |     appearance = 0 | ||||||
|  |     cmd_new = "" | ||||||
|  |     for c in cmd: | ||||||
|  |         if c == "[": | ||||||
|  |             appearance = appearance + 1 | ||||||
|  |         if appearance == 0: | ||||||
|  |             cmd_new = f"{cmd_new}{c}" | ||||||
|  |         if c == "]": | ||||||
|  |             appearance = appearance - 1 | ||||||
|  | 
 | ||||||
|  |     # only if all [..] will be delete if appearance > 0 there is a syntax errror | ||||||
|  |     if appearance == 0: | ||||||
|  |         cmd = cmd_new | ||||||
|  |      | ||||||
|  |     # same for <...> | ||||||
|  |     appearance = 0 | ||||||
|  |     cmd_new = "" | ||||||
|  |     for c in cmd: | ||||||
|  |         if c == "<": | ||||||
|  |             appearance = appearance + 1 | ||||||
|  |         if appearance == 0: | ||||||
|  |             cmd_new = f"{cmd_new}{c}" | ||||||
|  |         if c == ">": | ||||||
|  |             appearance = appearance - 1 | ||||||
|  | 
 | ||||||
|  |     # only if all <..> will be delete if appearance > 0 there is a syntax errror | ||||||
|  |     if appearance == 0: | ||||||
|  |         cmd = cmd_new | ||||||
|  | 
 | ||||||
|     if debug: |     if debug: | ||||||
|         print("") |         print("") | ||||||
|         print(cmd) |         print(cmd) | ||||||
|     cmd = re.sub('set','',cmd) |     cmd = re.sub('^set','',cmd) | ||||||
|     if debug: |     if debug: | ||||||
|         print(cmd) |         print(cmd) | ||||||
|     #while " | " in cmd: |     cmd = cmd.replace('|','') | ||||||
|     cmd = re.sub('\s+\|\s+','',cmd) |  | ||||||
|     if debug: |  | ||||||
|         print(cmd) |  | ||||||
|     cmd = re.sub('<\S*>','',cmd) |  | ||||||
|     if debug: |  | ||||||
|         print(cmd) |  | ||||||
|     cmd = re.sub('\[\S\]','',cmd) |  | ||||||
|     if debug: |     if debug: | ||||||
|         print(cmd) |         print(cmd) | ||||||
|     cmd = re.sub('\s+','',cmd) |     cmd = re.sub('\s+','',cmd) | ||||||
|  |     cmd = cmd.replace(':defaultvalue:','') | ||||||
|     if debug: |     if debug: | ||||||
|         print(cmd) |         print(cmd) | ||||||
|         print("") |         print("") | ||||||
|  |      | ||||||
|     return cmd |     return cmd | ||||||
| 
 | 
 | ||||||
| def build_row(app, fromdocname, rowdata):    | def build_row(app, fromdocname, rowdata):    | ||||||
| @ -467,10 +537,10 @@ def build_row(app, fromdocname, rowdata): | |||||||
|                     entry += nodes.paragraph(text=item) |                     entry += nodes.paragraph(text=item) | ||||||
|         elif isinstance(cell, bool): |         elif isinstance(cell, bool): | ||||||
|             if cell: |             if cell: | ||||||
|                 entry += nodes.paragraph(text="") |                 entry += nodes.paragraph(text="✔") | ||||||
|                 entry['classes'] = ['coverage-ok'] |                 entry['classes'] = ['coverage-ok'] | ||||||
|             else: |             else: | ||||||
|                 entry += nodes.paragraph(text="") |                 entry += nodes.paragraph(text="✕") | ||||||
|                 entry['classes'] = ['coverage-fail'] |                 entry['classes'] = ['coverage-fail'] | ||||||
|         else: |         else: | ||||||
|             entry += nodes.paragraph(text=cell) |             entry += nodes.paragraph(text=cell) | ||||||
| @ -478,30 +548,28 @@ def build_row(app, fromdocname, rowdata): | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def process_coverage(app, fromdocname, doccmd, xmlcmd, cli_type): | def process_coverage(app, fromdocname, doccmd, xmlcmd, vyoscmd, cli_type): | ||||||
|     coverage_list = {} |     coverage_list = {} | ||||||
|     int_docs = 0 |     strip_true_list = [] | ||||||
|     int_xml = 0 |  | ||||||
|     for cmd in doccmd: |     for cmd in doccmd: | ||||||
|         coverage_item = { |         coverage_item = { | ||||||
|             'doccmd': None, |             'doccmd': None, | ||||||
|             'xmlcmd': None, |             'xmlcmd': None, | ||||||
|  |             'vyoscmd': None, | ||||||
|             'doccmd_item': None, |             'doccmd_item': None, | ||||||
|             'xmlcmd_item': None, |             'xmlcmd_item': None, | ||||||
|  |             'vyoscmd_item': None, | ||||||
|             'indocs': False, |             'indocs': False, | ||||||
|             'inxml': False, |             'inxml': False, | ||||||
|  |             'invyos': False, | ||||||
|             'xmlfilename': None |             'xmlfilename': None | ||||||
|         } |         } | ||||||
|         coverage_item['doccmd'] = cmd['cmd'] |         coverage_item['doccmd'] = cmd['cmd'] | ||||||
|         coverage_item['doccmd_item'] = cmd |         coverage_item['doccmd_item'] = cmd | ||||||
|         coverage_item['indocs'] = True |         coverage_item['indocs'] = True | ||||||
|         int_docs += 1 |  | ||||||
| 
 | 
 | ||||||
|         coverage_list[strip_cmd(cmd['cmd'])] = dict(coverage_item) |         coverage_list[strip_cmd(cmd['cmd'])] = dict(coverage_item) | ||||||
| 
 | 
 | ||||||
|      |  | ||||||
|     #print(coverage_list.keys()) |  | ||||||
|      |  | ||||||
|     for cmd in xmlcmd: |     for cmd in xmlcmd: | ||||||
|          |          | ||||||
|         strip = strip_cmd(cmd['cmd']) |         strip = strip_cmd(cmd['cmd']) | ||||||
| @ -509,34 +577,64 @@ def process_coverage(app, fromdocname, doccmd, xmlcmd, cli_type): | |||||||
|             coverage_item = { |             coverage_item = { | ||||||
|                 'doccmd': None, |                 'doccmd': None, | ||||||
|                 'xmlcmd': None, |                 'xmlcmd': None, | ||||||
|  |                 'vyoscmd': None, | ||||||
|                 'doccmd_item': None, |                 'doccmd_item': None, | ||||||
|                 'xmlcmd_item': None, |                 'xmlcmd_item': None, | ||||||
|  |                 'vyoscmd_item': None, | ||||||
|                 'indocs': False, |                 'indocs': False, | ||||||
|                 'inxml': False, |                 'inxml': False, | ||||||
|  |                 'invyos': False, | ||||||
|                 'xmlfilename': None |                 'xmlfilename': None | ||||||
|             } |             } | ||||||
|             coverage_item['xmlcmd'] = cmd['cmd'] |             coverage_item['xmlcmd'] = cmd['cmd'] | ||||||
|             coverage_item['xmlcmd_item'] = cmd |             coverage_item['xmlcmd_item'] = cmd | ||||||
|             coverage_item['inxml'] = True |             coverage_item['inxml'] = True | ||||||
|             coverage_item['xmlfilename'] = cmd['filename'] |             coverage_item['xmlfilename'] = cmd['filename'] | ||||||
|             int_xml += 1 |  | ||||||
|             coverage_list[strip] = dict(coverage_item) |             coverage_list[strip] = dict(coverage_item) | ||||||
|         else: |         else: | ||||||
|             coverage_list[strip]['xmlcmd'] = cmd['cmd'] |             coverage_list[strip]['xmlcmd'] = cmd['cmd'] | ||||||
|             coverage_list[strip]['xmlcmd_item'] = cmd |             coverage_list[strip]['xmlcmd_item'] = cmd | ||||||
|             coverage_list[strip]['inxml'] = True |             coverage_list[strip]['inxml'] = True | ||||||
|             coverage_list[strip]['xmlfilename'] = cmd['filename'] |             coverage_list[strip]['xmlfilename'] = cmd['filename'] | ||||||
|             int_xml += 1 |  | ||||||
| 
 | 
 | ||||||
|  |      | ||||||
|  |     for item in vyoscmd[cli_type]: | ||||||
|  |         cmd = ' '.join(item['cmd']) | ||||||
|  |         strip = strip_cmd(cmd) | ||||||
|  |         if strip not in coverage_list.keys(): | ||||||
|  |             coverage_item = { | ||||||
|  |                 'doccmd': None, | ||||||
|  |                 'xmlcmd': None, | ||||||
|  |                 'vyoscmd': None, | ||||||
|  |                 'doccmd_item': None, | ||||||
|  |                 'xmlcmd_item': None, | ||||||
|  |                 'vyoscmd_item': None, | ||||||
|  |                 'indocs': False, | ||||||
|  |                 'inxml': False, | ||||||
|  |                 'invyos': False, | ||||||
|  |                 'xmlfilename': None | ||||||
|  |             } | ||||||
|  |             coverage_item['vyoscmd'] = cmd | ||||||
|  |             coverage_item['invyos'] = True | ||||||
|  |             coverage_list[strip] = dict(coverage_item) | ||||||
|  |         else: | ||||||
|  |             coverage_list[strip]['vyoscmd'] = cmd | ||||||
|  |             coverage_list[strip]['invyos'] = True | ||||||
|  |             if coverage_list[strip]['indocs'] and coverage_list[strip]['invyos']: | ||||||
|  |                 strip_true_list.append(strip) | ||||||
|  | 
 | ||||||
|  |      | ||||||
|  | 
 | ||||||
|  |     strip_true_list = list(set(strip_true_list)) | ||||||
| 
 | 
 | ||||||
|      |      | ||||||
| 
 | 
 | ||||||
|     table = nodes.table() |     table = nodes.table() | ||||||
|     tgroup = nodes.tgroup(cols=3) |     tgroup = nodes.tgroup(cols=4) | ||||||
|     table += tgroup |     table += tgroup | ||||||
| 
 | 
 | ||||||
|     header = (f'{int_docs}/{len(coverage_list)} in Docs', f'{int_xml}/{len(coverage_list)} in XML', 'Command') |     header = (f'Status {len(strip_true_list)}/{len(coverage_list)}', 'Documentation', 'XML', f'in VyOS {vyoscmd["os"]}') | ||||||
|     colwidths = (1, 1, 8) |     colwidths = (5, 33 , 33, 33) | ||||||
|     table = nodes.table() |     table = nodes.table() | ||||||
|     tgroup = nodes.tgroup(cols=len(header)) |     tgroup = nodes.tgroup(cols=len(header)) | ||||||
|     table += tgroup |     table += tgroup | ||||||
| @ -548,28 +646,42 @@ def process_coverage(app, fromdocname, doccmd, xmlcmd, cli_type): | |||||||
|     tbody = nodes.tbody() |     tbody = nodes.tbody() | ||||||
|     tgroup += tbody |     tgroup += tbody | ||||||
|     for entry in sorted(coverage_list): |     for entry in sorted(coverage_list): | ||||||
|         body_text_list = [] |         doc_cmd_text = [] | ||||||
|  |         doc_xml_text = [] | ||||||
|  |         doc_vyos_text = [] | ||||||
|         if coverage_list[entry]['indocs']: |         if coverage_list[entry]['indocs']: | ||||||
|             body_text_list.append(coverage_list[entry]['doccmd_item']) |             doc_cmd_text.append(coverage_list[entry]['doccmd_item']) | ||||||
|         else: |         else: | ||||||
|             body_text_list.append('Not documented yet') |             doc_cmd_text.append('not yet documented') | ||||||
| 
 | 
 | ||||||
|         if coverage_list[entry]['inxml']: |         if coverage_list[entry]['inxml']: | ||||||
|             body_text_list.append("------------------") |             doc_xml_text.append(str(coverage_list[entry]['xmlfilename']) + ":") | ||||||
|             body_text_list.append(str(coverage_list[entry]['xmlfilename']) + ":") |             doc_xml_text.append(coverage_list[entry]['xmlcmd']) | ||||||
|             body_text_list.append(coverage_list[entry]['xmlcmd']) |  | ||||||
|         else: |         else: | ||||||
|             body_text_list.append('Nothing found in XML Definitions') |             doc_xml_text.append('Nothing found in XML Definitions') | ||||||
|  |          | ||||||
|  |         if coverage_list[entry]['invyos']: | ||||||
|  |             doc_vyos_text.append(coverage_list[entry]['vyoscmd']) | ||||||
|  |         else: | ||||||
|  |             doc_vyos_text.append('Nothing found in VyOS') | ||||||
| 
 | 
 | ||||||
|              | 
 | ||||||
|  |         if not coverage_list[entry]['indocs'] or not coverage_list[entry]['invyos']: | ||||||
|  |             status = False | ||||||
|  |         else: | ||||||
|  |             status = True | ||||||
|  |          | ||||||
|         tbody += build_row(app, fromdocname,  |         tbody += build_row(app, fromdocname,  | ||||||
|             ( |             ( | ||||||
|                 coverage_list[entry]['indocs'], |                 status, | ||||||
|                 coverage_list[entry]['inxml'], |                 doc_cmd_text, | ||||||
|                 body_text_list |                 doc_xml_text, | ||||||
|  |                 doc_vyos_text | ||||||
|  | 
 | ||||||
|             ) |             ) | ||||||
|         ) |         ) | ||||||
| 
 | 
 | ||||||
|  |     table['ids'] = [f'table-{cli_type}'] | ||||||
|     return table |     return table | ||||||
| 
 | 
 | ||||||
| def process_cmd_node(app, cmd, fromdocname, cli_type): | def process_cmd_node(app, cmd, fromdocname, cli_type): | ||||||
| @ -599,6 +711,7 @@ def process_cmd_nodes(app, doctree, fromdocname): | |||||||
|                         fromdocname, |                         fromdocname, | ||||||
|                         env.vyos_cfgcmd, |                         env.vyos_cfgcmd, | ||||||
|                         app.config.vyos_working_commands['cfgcmd'], |                         app.config.vyos_working_commands['cfgcmd'], | ||||||
|  |                         app.config.vyos_commands, | ||||||
|                         'cfgcmd' |                         'cfgcmd' | ||||||
|                         ) |                         ) | ||||||
|                     ) |                     ) | ||||||
| @ -616,6 +729,7 @@ def process_cmd_nodes(app, doctree, fromdocname): | |||||||
|                         fromdocname, |                         fromdocname, | ||||||
|                         env.vyos_opcmd, |                         env.vyos_opcmd, | ||||||
|                         app.config.vyos_working_commands['opcmd'], |                         app.config.vyos_working_commands['opcmd'], | ||||||
|  |                         app.config.vyos_commands, | ||||||
|                         'opcmd' |                         'opcmd' | ||||||
|                         ) |                         ) | ||||||
|                     ) |                     ) | ||||||
| @ -640,4 +754,21 @@ def vytask_role(name, rawtext, text, lineno, inliner, options={}, content=[]): | |||||||
| 
 | 
 | ||||||
| def cmd_role(name, rawtext, text, lineno, inliner, options={}, content=[]): | def cmd_role(name, rawtext, text, lineno, inliner, options={}, content=[]): | ||||||
|     node = nodes.literal(text, text) |     node = nodes.literal(text, text) | ||||||
|     return [node], [] |     return [node], [] | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def handle_document_meta_data(app, document): | ||||||
|  |     docname = app.env.docname | ||||||
|  |     lastproofread = app.env.metadata[docname].get('lastproofread', False) | ||||||
|  |     if lastproofread: | ||||||
|  |         try: | ||||||
|  |             lastproofread_time = datetime.strptime(lastproofread, '%Y-%m-%d') | ||||||
|  |             delta = datetime.now() - lastproofread_time | ||||||
|  |             if delta.days > 365: | ||||||
|  |                 logger.warning(f'{delta.days} days since last proofread {app.env.doc2path(docname)}') | ||||||
|  | 
 | ||||||
|  |         except Exception as e: | ||||||
|  |             logger.warning(f'lastproofread meta data error in {app.env.doc2path(docname)}: {e}') | ||||||
|  |     else: | ||||||
|  |         pass | ||||||
|  |         #logger.warning(f'lastproofread meta data missing in {app.env.doc2path(docname)}') | ||||||
|  | |||||||
| @ -2,8 +2,10 @@ | |||||||
| 
 | 
 | ||||||
| .. _`accel-ppp`: https://accel-ppp.org/ | .. _`accel-ppp`: https://accel-ppp.org/ | ||||||
| .. _`Secure Socket Tunneling Protocol`: https://en.wikipedia.org/wiki/Secure_Socket_Tunneling_Protocol | .. _`Secure Socket Tunneling Protocol`: https://en.wikipedia.org/wiki/Secure_Socket_Tunneling_Protocol | ||||||
| .. _Phabricator: https://phabricator.vyos.net/ | .. _Phabricator: https://vyos.dev/ | ||||||
| .. _802.1ad: https://en.wikipedia.org/wiki/IEEE_802.1ad | .. _802.1ad: https://en.wikipedia.org/wiki/IEEE_802.1ad | ||||||
| .. _802.1q: https://en.wikipedia.org/wiki/IEEE_802.1Q | .. _802.1q: https://en.wikipedia.org/wiki/IEEE_802.1Q | ||||||
|  | .. _`VyOS CI`: https://ci.vyos.net | ||||||
|  | .. _vyos-build: https://github.com/vyos/vyos-build | ||||||
| 
 | 
 | ||||||
| .. start_vyoslinter | .. start_vyoslinter | ||||||
|  | |||||||
							
								
								
									
										88283
									
								
								docs/_include/coverage/20220531-1.3.1-S1.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										88777
									
								
								docs/_include/coverage/20220907-1.3.2.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										90051
									
								
								docs/_include/coverage/20230724-1.3.3.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -17,5 +17,5 @@ | |||||||
| 
 | 
 | ||||||
|     set interfaces {{ var0 }} {{ var1 }} {{ var2 }} {{ var4 }} {{ var5 }} {{ var7 }} address 192.0.2.1/24 |     set interfaces {{ var0 }} {{ var1 }} {{ var2 }} {{ var4 }} {{ var5 }} {{ var7 }} address 192.0.2.1/24 | ||||||
|     set interfaces {{ var0 }} {{ var1 }} {{ var2 }} {{ var4 }} {{ var5 }} {{ var7 }} address 2001:db8::1/64 |     set interfaces {{ var0 }} {{ var1 }} {{ var2 }} {{ var4 }} {{ var5 }} {{ var7 }} address 2001:db8::1/64 | ||||||
|     set interfaces {{ var0 }} {{ var1 }} {{ var2 }} {{ var4 }} {{ var5 }} {{ var7 }} dhcp |     set interfaces {{ var0 }} {{ var1 }} {{ var2 }} {{ var4 }} {{ var5 }} {{ var7 }} address dhcp | ||||||
|     set interfaces {{ var0 }} {{ var1 }} {{ var2 }} {{ var4 }} {{ var5 }} {{ var7 }} dhcpv6 |     set interfaces {{ var0 }} {{ var1 }} {{ var2 }} {{ var4 }} {{ var5 }} {{ var7 }} address dhcpv6 | ||||||
|  | |||||||
							
								
								
									
										7
									
								
								docs/_include/interface-common-without-dhcp1.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,7 @@ | |||||||
|  | .. cmdinclude:: /_include/interface-address.txt | ||||||
|  |   :var0: {{ var0 }} | ||||||
|  |   :var1: {{ var1 }} | ||||||
|  | 
 | ||||||
|  | .. cmdinclude:: /_include/interface-common-without-mac.txt | ||||||
|  |   :var0: {{ var0 }} | ||||||
|  |   :var1: {{ var1 }} | ||||||
							
								
								
									
										31
									
								
								docs/_include/interface-common-without-mac.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,31 @@ | |||||||
|  | .. cmdinclude:: /_include/interface-description.txt | ||||||
|  |   :var0: {{ var0 }} | ||||||
|  |   :var1: {{ var1 }} | ||||||
|  | 
 | ||||||
|  | .. cmdinclude:: /_include/interface-disable.txt | ||||||
|  |   :var0: {{ var0 }} | ||||||
|  |   :var1: {{ var1 }} | ||||||
|  | 
 | ||||||
|  | .. cmdinclude:: /_include/interface-disable-flow-control.txt | ||||||
|  |   :var0: {{ var0 }} | ||||||
|  |   :var1: {{ var1 }} | ||||||
|  | 
 | ||||||
|  | .. cmdinclude:: /_include/interface-disable-link-detect.txt | ||||||
|  |   :var0: {{ var0 }} | ||||||
|  |   :var1: {{ var1 }} | ||||||
|  | 
 | ||||||
|  | .. cmdinclude:: /_include/interface-mtu.txt | ||||||
|  |   :var0: {{ var0 }} | ||||||
|  |   :var1: {{ var1 }} | ||||||
|  | 
 | ||||||
|  | .. cmdinclude:: /_include/interface-ip.txt | ||||||
|  |   :var0: {{ var0 }} | ||||||
|  |   :var1: {{ var1 }} | ||||||
|  | 
 | ||||||
|  | .. cmdinclude:: /_include/interface-ipv6.txt | ||||||
|  |   :var0: {{ var0 }} | ||||||
|  |   :var1: {{ var1 }} | ||||||
|  | 
 | ||||||
|  | .. cmdinclude:: /_include/interface-vrf.txt | ||||||
|  |   :var0: {{ var0 }} | ||||||
|  |   :var1: {{ var1 }} | ||||||
| @ -1,7 +1,10 @@ | |||||||
| SPAN port mirroring can copy the inbound/outbound traffic of the interface to | SPAN port mirroring can copy the inbound/outbound traffic of the interface to | ||||||
| the specified interface, usually the interface can be connected to some special | the specified interface, usually the interface can be connected to some special | ||||||
| equipment, such as behavior control system, intrusion detection system and | equipment, such as behavior control system, intrusion detection system and | ||||||
| traffic collector, and can copy all related traffic from this port | traffic collector, and can copy all related traffic from this port. | ||||||
|  | The benefit of mirroring the traffic is that the application is isolated from  | ||||||
|  | the source traffic and so application processing does not affect the traffic  | ||||||
|  | or the system performance. | ||||||
| 
 | 
 | ||||||
| VyOS uses the `mirror` option to configure port mirroring. The configuration | VyOS uses the `mirror` option to configure port mirroring. The configuration | ||||||
| is divided into 2 different directions. Destination ports should be configured | is divided into 2 different directions. Destination ports should be configured | ||||||
|  | |||||||
| @ -1,27 +0,0 @@ | |||||||
| .. cfgcmd:: set interfaces {{ var0 }} <interface> xdp |  | ||||||
| 
 |  | ||||||
|   Enable support for Linux :abbr:`XDP (eXpress Data Path)` on recent 1.3 rolling |  | ||||||
|   releases. You must enable it for every interface which should participate in |  | ||||||
|   the XDP forwarding. |  | ||||||
| 
 |  | ||||||
|   XDP is an eBPF based high performance data path merged in the Linux kernel |  | ||||||
|   since version 4.8. The idea behind XDP is to add an early hook in the RX path |  | ||||||
|   of the kernel, and let a user supplied eBPF program decide the fate of the |  | ||||||
|   packet. The hook is placed in the NIC driver just after the interrupt |  | ||||||
|   processing, and before any memory allocation needed by the network stack |  | ||||||
|   itself, because memory allocation can be an expensive operation. |  | ||||||
| 
 |  | ||||||
|   .. warning:: This is highly experimental! |  | ||||||
| 
 |  | ||||||
|   .. note:: Enabling this feature will break any form of NAT or Firewalling on |  | ||||||
|     this interface, as XDP is handled way earlier in the driver then iptables/ |  | ||||||
|     nftables. |  | ||||||
| 
 |  | ||||||
|   Enabling this feature will only load the XDP router code as described here: |  | ||||||
|   https://blog.apnic.net/2020/04/30/how-to-build-an-xdp-based-bgp-peering-router/ |  | ||||||
| 
 |  | ||||||
|   Example: |  | ||||||
| 
 |  | ||||||
|   .. code-block:: none |  | ||||||
| 
 |  | ||||||
|     set interfaces {{ var0 }} {{ var1 }} xdp |  | ||||||
| @ -1 +1 @@ | |||||||
| Subproject commit 86209c679c6b7ca9d5bac1f67ffd391b9b16c008 | Subproject commit e6118a08081faccaccea14fe1c30a633250ef901 | ||||||
							
								
								
									
										
											BIN
										
									
								
								docs/_static/css/DataTables-1.11.5/images/sort_asc.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 160 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/css/DataTables-1.11.5/images/sort_asc_disabled.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 146 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/css/DataTables-1.11.5/images/sort_both.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 201 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/css/DataTables-1.11.5/images/sort_desc.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 158 B | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/css/DataTables-1.11.5/images/sort_desc_disabled.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 148 B | 
							
								
								
									
										37
									
								
								docs/_static/css/custom.css
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,3 +1,8 @@ | |||||||
|  | div.card-header { | ||||||
|  |   font-weight: bold; | ||||||
|  |   background: #fdab10; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| span.opcmd, | span.opcmd, | ||||||
| span.cfgcmd { | span.cfgcmd { | ||||||
|     font-weight: bold; |     font-weight: bold; | ||||||
| @ -15,13 +20,13 @@ span.cfgcmd:before { | |||||||
|   margin-right: 0px; |   margin-right: 0px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| td p a.cmdlink span.cfgcmd:before, | td a.cmdlink span.cfgcmd:before, | ||||||
| td p a.cmdlink span.opcmd:before  { | td a.cmdlink span.opcmd:before  { | ||||||
|   content: ""; |   content: ""; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| td p a.cmdlink, | td a.cmdlink, | ||||||
| td p a.cmdlink { | td a.cmdlink { | ||||||
|   margin-left: 0px; |   margin-left: 0px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -82,6 +87,12 @@ span.opcmd:before { | |||||||
|     display: none; |     display: none; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | .defaultvalue{ | ||||||
|  |   font-size: 90%; | ||||||
|  |   color: gray; | ||||||
|  |   margin-bottom: 5px; | ||||||
|  | 
 | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| a.cmdlink { | a.cmdlink { | ||||||
|     font-size: 80%; |     font-size: 80%; | ||||||
| @ -156,7 +167,7 @@ a.cmdlink span:hover{ | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .wy-nav-top { | .wy-nav-top { | ||||||
|   background-color : #ffffff !important; |   background-color : #ffffff; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .wy-nav-top img { | .wy-nav-top img { | ||||||
| @ -165,13 +176,19 @@ a.cmdlink span:hover{ | |||||||
| 
 | 
 | ||||||
| .rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td.coverage-ok, | .rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td.coverage-ok, | ||||||
| .rst-content table.docutils td.coverage-ok { | .rst-content table.docutils td.coverage-ok { | ||||||
|   background-color: green; |   color: green; | ||||||
|   color: black; |   text-align: center; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| .rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td.coverage-fail, | .rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td.coverage-fail, | ||||||
| .rst-content table.docutils td.coverage-fail { | .rst-content table.docutils td.coverage-fail { | ||||||
|   background-color: red; |   color: red; | ||||||
|   color: black; |   text-align: center; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @media screen and (max-width: 768px) { | ||||||
|  |   .wy-nav-top{ | ||||||
|  |     background-color: #fdab10; | ||||||
|  |   } | ||||||
| } | } | ||||||
							
								
								
									
										497
									
								
								docs/_static/css/datatables.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,497 @@ | |||||||
|  | /* | ||||||
|  |  * This combined file was created by the DataTables downloader builder: | ||||||
|  |  *   https://datatables.net/download | ||||||
|  |  * | ||||||
|  |  * To rebuild or modify this file with the latest versions of the included | ||||||
|  |  * software please visit: | ||||||
|  |  *   https://datatables.net/download/#dt/dt-1.11.5 | ||||||
|  |  * | ||||||
|  |  * Included libraries: | ||||||
|  |  *   DataTables 1.11.5 | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | table.dataTable th.dt-left, | ||||||
|  | table.dataTable td.dt-left { | ||||||
|  |   text-align: left; | ||||||
|  | } | ||||||
|  | table.dataTable th.dt-center, | ||||||
|  | table.dataTable td.dt-center, | ||||||
|  | table.dataTable td.dataTables_empty { | ||||||
|  |   text-align: center; | ||||||
|  | } | ||||||
|  | table.dataTable th.dt-right, | ||||||
|  | table.dataTable td.dt-right { | ||||||
|  |   text-align: right; | ||||||
|  | } | ||||||
|  | table.dataTable th.dt-justify, | ||||||
|  | table.dataTable td.dt-justify { | ||||||
|  |   text-align: justify; | ||||||
|  | } | ||||||
|  | table.dataTable th.dt-nowrap, | ||||||
|  | table.dataTable td.dt-nowrap { | ||||||
|  |   white-space: nowrap; | ||||||
|  | } | ||||||
|  | table.dataTable thead th.dt-head-left, | ||||||
|  | table.dataTable thead td.dt-head-left, | ||||||
|  | table.dataTable tfoot th.dt-head-left, | ||||||
|  | table.dataTable tfoot td.dt-head-left { | ||||||
|  |   text-align: left; | ||||||
|  | } | ||||||
|  | table.dataTable thead th.dt-head-center, | ||||||
|  | table.dataTable thead td.dt-head-center, | ||||||
|  | table.dataTable tfoot th.dt-head-center, | ||||||
|  | table.dataTable tfoot td.dt-head-center { | ||||||
|  |   text-align: center; | ||||||
|  | } | ||||||
|  | table.dataTable thead th.dt-head-right, | ||||||
|  | table.dataTable thead td.dt-head-right, | ||||||
|  | table.dataTable tfoot th.dt-head-right, | ||||||
|  | table.dataTable tfoot td.dt-head-right { | ||||||
|  |   text-align: right; | ||||||
|  | } | ||||||
|  | table.dataTable thead th.dt-head-justify, | ||||||
|  | table.dataTable thead td.dt-head-justify, | ||||||
|  | table.dataTable tfoot th.dt-head-justify, | ||||||
|  | table.dataTable tfoot td.dt-head-justify { | ||||||
|  |   text-align: justify; | ||||||
|  | } | ||||||
|  | table.dataTable thead th.dt-head-nowrap, | ||||||
|  | table.dataTable thead td.dt-head-nowrap, | ||||||
|  | table.dataTable tfoot th.dt-head-nowrap, | ||||||
|  | table.dataTable tfoot td.dt-head-nowrap { | ||||||
|  |   white-space: nowrap; | ||||||
|  | } | ||||||
|  | table.dataTable tbody th.dt-body-left, | ||||||
|  | table.dataTable tbody td.dt-body-left { | ||||||
|  |   text-align: left; | ||||||
|  | } | ||||||
|  | table.dataTable tbody th.dt-body-center, | ||||||
|  | table.dataTable tbody td.dt-body-center { | ||||||
|  |   text-align: center; | ||||||
|  | } | ||||||
|  | table.dataTable tbody th.dt-body-right, | ||||||
|  | table.dataTable tbody td.dt-body-right { | ||||||
|  |   text-align: right; | ||||||
|  | } | ||||||
|  | table.dataTable tbody th.dt-body-justify, | ||||||
|  | table.dataTable tbody td.dt-body-justify { | ||||||
|  |   text-align: justify; | ||||||
|  | } | ||||||
|  | table.dataTable tbody th.dt-body-nowrap, | ||||||
|  | table.dataTable tbody td.dt-body-nowrap { | ||||||
|  |   white-space: nowrap; | ||||||
|  | } | ||||||
|  | table.dataTable td.dt-control { | ||||||
|  |   text-align: center; | ||||||
|  |   cursor: pointer; | ||||||
|  | } | ||||||
|  | table.dataTable td.dt-control:before { | ||||||
|  |   height: 1em; | ||||||
|  |   width: 1em; | ||||||
|  |   margin-top: -9px; | ||||||
|  |   display: inline-block; | ||||||
|  |   color: white; | ||||||
|  |   border: 0.15em solid white; | ||||||
|  |   border-radius: 1em; | ||||||
|  |   box-shadow: 0 0 0.2em #444; | ||||||
|  |   box-sizing: content-box; | ||||||
|  |   text-align: center; | ||||||
|  |   text-indent: 0 !important; | ||||||
|  |   font-family: "Courier New", Courier, monospace; | ||||||
|  |   line-height: 1em; | ||||||
|  |   content: "+"; | ||||||
|  |   background-color: #31b131; | ||||||
|  | } | ||||||
|  | table.dataTable tr.dt-hasChild td.dt-control:before { | ||||||
|  |   content: "-"; | ||||||
|  |   background-color: #d33333; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* | ||||||
|  |  * Table styles | ||||||
|  |  */ | ||||||
|  | table.dataTable { | ||||||
|  |   width: 100%; | ||||||
|  |   margin: 0 auto; | ||||||
|  |   clear: both; | ||||||
|  |   border-collapse: separate; | ||||||
|  |   border-spacing: 0; | ||||||
|  |   /* | ||||||
|  |    * Header and footer styles | ||||||
|  |    */ | ||||||
|  |   /* | ||||||
|  |    * Body styles | ||||||
|  |    */ | ||||||
|  | } | ||||||
|  | table.dataTable thead th, | ||||||
|  | table.dataTable tfoot th { | ||||||
|  |   font-weight: bold; | ||||||
|  | } | ||||||
|  | table.dataTable thead th, | ||||||
|  | table.dataTable thead td { | ||||||
|  |   padding: 10px 18px; | ||||||
|  |   border-bottom: 1px solid #111; | ||||||
|  | } | ||||||
|  | table.dataTable thead th:active, | ||||||
|  | table.dataTable thead td:active { | ||||||
|  |   outline: none; | ||||||
|  | } | ||||||
|  | table.dataTable tfoot th, | ||||||
|  | table.dataTable tfoot td { | ||||||
|  |   padding: 10px 18px 6px 18px; | ||||||
|  |   border-top: 1px solid #111; | ||||||
|  | } | ||||||
|  | table.dataTable thead .sorting, | ||||||
|  | table.dataTable thead .sorting_asc, | ||||||
|  | table.dataTable thead .sorting_desc, | ||||||
|  | table.dataTable thead .sorting_asc_disabled, | ||||||
|  | table.dataTable thead .sorting_desc_disabled { | ||||||
|  |   cursor: pointer; | ||||||
|  |   *cursor: hand; | ||||||
|  |   background-repeat: no-repeat; | ||||||
|  |   background-position: center right; | ||||||
|  | } | ||||||
|  | table.dataTable thead .sorting { | ||||||
|  |   background-image: url("DataTables-1.11.5/images/sort_both.png"); | ||||||
|  | } | ||||||
|  | table.dataTable thead .sorting_asc { | ||||||
|  |   background-image: url("DataTables-1.11.5/images/sort_asc.png") !important; | ||||||
|  | } | ||||||
|  | table.dataTable thead .sorting_desc { | ||||||
|  |   background-image: url("DataTables-1.11.5/images/sort_desc.png") !important; | ||||||
|  | } | ||||||
|  | table.dataTable thead .sorting_asc_disabled { | ||||||
|  |   background-image: url("DataTables-1.11.5/images/sort_asc_disabled.png"); | ||||||
|  | } | ||||||
|  | table.dataTable thead .sorting_desc_disabled { | ||||||
|  |   background-image: url("DataTables-1.11.5/images/sort_desc_disabled.png"); | ||||||
|  | } | ||||||
|  | table.dataTable tbody tr { | ||||||
|  |   background-color: #ffffff; | ||||||
|  | } | ||||||
|  | table.dataTable tbody tr.selected { | ||||||
|  |   background-color: #B0BED9; | ||||||
|  | } | ||||||
|  | table.dataTable tbody th, | ||||||
|  | table.dataTable tbody td { | ||||||
|  |   padding: 8px 10px; | ||||||
|  | } | ||||||
|  | table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { | ||||||
|  |   border-top: 1px solid #ddd; | ||||||
|  | } | ||||||
|  | table.dataTable.row-border tbody tr:first-child th, | ||||||
|  | table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, | ||||||
|  | table.dataTable.display tbody tr:first-child td { | ||||||
|  |   border-top: none; | ||||||
|  | } | ||||||
|  | table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { | ||||||
|  |   border-top: 1px solid #ddd; | ||||||
|  |   border-right: 1px solid #ddd; | ||||||
|  | } | ||||||
|  | table.dataTable.cell-border tbody tr th:first-child, | ||||||
|  | table.dataTable.cell-border tbody tr td:first-child { | ||||||
|  |   border-left: 1px solid #ddd; | ||||||
|  | } | ||||||
|  | table.dataTable.cell-border tbody tr:first-child th, | ||||||
|  | table.dataTable.cell-border tbody tr:first-child td { | ||||||
|  |   border-top: none; | ||||||
|  | } | ||||||
|  | table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { | ||||||
|  |   background-color: #f9f9f9; | ||||||
|  | } | ||||||
|  | table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { | ||||||
|  |   background-color: #acbad4; | ||||||
|  | } | ||||||
|  | table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { | ||||||
|  |   background-color: #f6f6f6; | ||||||
|  | } | ||||||
|  | table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected { | ||||||
|  |   background-color: #aab7d1; | ||||||
|  | } | ||||||
|  | table.dataTable.order-column tbody tr > .sorting_1, | ||||||
|  | table.dataTable.order-column tbody tr > .sorting_2, | ||||||
|  | table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, | ||||||
|  | table.dataTable.display tbody tr > .sorting_2, | ||||||
|  | table.dataTable.display tbody tr > .sorting_3 { | ||||||
|  |   background-color: #fafafa; | ||||||
|  | } | ||||||
|  | table.dataTable.order-column tbody tr.selected > .sorting_1, | ||||||
|  | table.dataTable.order-column tbody tr.selected > .sorting_2, | ||||||
|  | table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, | ||||||
|  | table.dataTable.display tbody tr.selected > .sorting_2, | ||||||
|  | table.dataTable.display tbody tr.selected > .sorting_3 { | ||||||
|  |   background-color: #acbad5; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { | ||||||
|  |   background-color: #f1f1f1; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { | ||||||
|  |   background-color: #f3f3f3; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { | ||||||
|  |   background-color: whitesmoke; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { | ||||||
|  |   background-color: #a6b4cd; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { | ||||||
|  |   background-color: #a8b5cf; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { | ||||||
|  |   background-color: #a9b7d1; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { | ||||||
|  |   background-color: #fafafa; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { | ||||||
|  |   background-color: #fcfcfc; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { | ||||||
|  |   background-color: #fefefe; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { | ||||||
|  |   background-color: #acbad5; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { | ||||||
|  |   background-color: #aebcd6; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { | ||||||
|  |   background-color: #afbdd8; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 { | ||||||
|  |   background-color: #eaeaea; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 { | ||||||
|  |   background-color: #ececec; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 { | ||||||
|  |   background-color: #efefef; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 { | ||||||
|  |   background-color: #a2aec7; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 { | ||||||
|  |   background-color: #a3b0c9; | ||||||
|  | } | ||||||
|  | table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 { | ||||||
|  |   background-color: #a5b2cb; | ||||||
|  | } | ||||||
|  | table.dataTable.no-footer { | ||||||
|  |   border-bottom: 1px solid #111; | ||||||
|  | } | ||||||
|  | table.dataTable.nowrap th, table.dataTable.nowrap td { | ||||||
|  |   white-space: nowrap; | ||||||
|  | } | ||||||
|  | table.dataTable.compact thead th, | ||||||
|  | table.dataTable.compact thead td { | ||||||
|  |   padding: 4px 17px; | ||||||
|  | } | ||||||
|  | table.dataTable.compact tfoot th, | ||||||
|  | table.dataTable.compact tfoot td { | ||||||
|  |   padding: 4px; | ||||||
|  | } | ||||||
|  | table.dataTable.compact tbody th, | ||||||
|  | table.dataTable.compact tbody td { | ||||||
|  |   padding: 4px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table.dataTable th, | ||||||
|  | table.dataTable td { | ||||||
|  |   box-sizing: content-box; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* | ||||||
|  |  * Control feature layout | ||||||
|  |  */ | ||||||
|  | .dataTables_wrapper { | ||||||
|  |   position: relative; | ||||||
|  |   clear: both; | ||||||
|  |   margin-bottom: 24px; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_length { | ||||||
|  |   float: left; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_length select { | ||||||
|  |   border: 1px solid #aaa; | ||||||
|  |   border-radius: 3px; | ||||||
|  |   padding: 5px; | ||||||
|  |   background-color: transparent; | ||||||
|  |   padding: 4px; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_filter { | ||||||
|  |   float: right; | ||||||
|  |   text-align: right; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_filter input { | ||||||
|  |   border: 1px solid #aaa; | ||||||
|  |   border-radius: 3px; | ||||||
|  |   padding: 5px; | ||||||
|  |   background-color: transparent; | ||||||
|  |   margin-left: 3px; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_info { | ||||||
|  |   clear: both; | ||||||
|  |   float: left; | ||||||
|  |   padding-top: 0.755em; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_paginate { | ||||||
|  |   float: right; | ||||||
|  |   text-align: right; | ||||||
|  |   padding-top: 0.25em; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_paginate .paginate_button { | ||||||
|  |   box-sizing: border-box; | ||||||
|  |   display: inline-block; | ||||||
|  |   min-width: 1.5em; | ||||||
|  |   padding: 0.5em 1em; | ||||||
|  |   margin-left: 2px; | ||||||
|  |   text-align: center; | ||||||
|  |   text-decoration: none !important; | ||||||
|  |   cursor: pointer; | ||||||
|  |   *cursor: hand; | ||||||
|  |   color: #333 !important; | ||||||
|  |   border: 1px solid transparent; | ||||||
|  |   border-radius: 2px; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { | ||||||
|  |   color: #333 !important; | ||||||
|  |   border: 1px solid #979797; | ||||||
|  |   background-color: white; | ||||||
|  |   background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc)); | ||||||
|  |   /* Chrome,Safari4+ */ | ||||||
|  |   background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%); | ||||||
|  |   /* Chrome10+,Safari5.1+ */ | ||||||
|  |   background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%); | ||||||
|  |   /* FF3.6+ */ | ||||||
|  |   background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%); | ||||||
|  |   /* IE10+ */ | ||||||
|  |   background: -o-linear-gradient(top, white 0%, #dcdcdc 100%); | ||||||
|  |   /* Opera 11.10+ */ | ||||||
|  |   background: linear-gradient(to bottom, white 0%, #dcdcdc 100%); | ||||||
|  |   /* W3C */ | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { | ||||||
|  |   cursor: default; | ||||||
|  |   color: #666 !important; | ||||||
|  |   border: 1px solid transparent; | ||||||
|  |   background: transparent; | ||||||
|  |   box-shadow: none; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_paginate .paginate_button:hover { | ||||||
|  |   color: white !important; | ||||||
|  |   border: 1px solid #111; | ||||||
|  |   background-color: #585858; | ||||||
|  |   background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); | ||||||
|  |   /* Chrome,Safari4+ */ | ||||||
|  |   background: -webkit-linear-gradient(top, #585858 0%, #111 100%); | ||||||
|  |   /* Chrome10+,Safari5.1+ */ | ||||||
|  |   background: -moz-linear-gradient(top, #585858 0%, #111 100%); | ||||||
|  |   /* FF3.6+ */ | ||||||
|  |   background: -ms-linear-gradient(top, #585858 0%, #111 100%); | ||||||
|  |   /* IE10+ */ | ||||||
|  |   background: -o-linear-gradient(top, #585858 0%, #111 100%); | ||||||
|  |   /* Opera 11.10+ */ | ||||||
|  |   background: linear-gradient(to bottom, #585858 0%, #111 100%); | ||||||
|  |   /* W3C */ | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_paginate .paginate_button:active { | ||||||
|  |   outline: none; | ||||||
|  |   background-color: #2b2b2b; | ||||||
|  |   background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); | ||||||
|  |   /* Chrome,Safari4+ */ | ||||||
|  |   background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); | ||||||
|  |   /* Chrome10+,Safari5.1+ */ | ||||||
|  |   background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); | ||||||
|  |   /* FF3.6+ */ | ||||||
|  |   background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); | ||||||
|  |   /* IE10+ */ | ||||||
|  |   background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); | ||||||
|  |   /* Opera 11.10+ */ | ||||||
|  |   background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); | ||||||
|  |   /* W3C */ | ||||||
|  |   box-shadow: inset 0 0 3px #111; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_paginate .ellipsis { | ||||||
|  |   padding: 0 1em; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_processing { | ||||||
|  |   position: absolute; | ||||||
|  |   top: 50%; | ||||||
|  |   left: 50%; | ||||||
|  |   width: 100%; | ||||||
|  |   height: 40px; | ||||||
|  |   margin-left: -50%; | ||||||
|  |   margin-top: -25px; | ||||||
|  |   padding-top: 20px; | ||||||
|  |   text-align: center; | ||||||
|  |   font-size: 1.2em; | ||||||
|  |   background-color: white; | ||||||
|  |   background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); | ||||||
|  |   background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); | ||||||
|  |   background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); | ||||||
|  |   background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); | ||||||
|  |   background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); | ||||||
|  |   background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_length, | ||||||
|  | .dataTables_wrapper .dataTables_filter, | ||||||
|  | .dataTables_wrapper .dataTables_info, | ||||||
|  | .dataTables_wrapper .dataTables_processing, | ||||||
|  | .dataTables_wrapper .dataTables_paginate { | ||||||
|  |   color: #333; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_scroll { | ||||||
|  |   clear: both; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { | ||||||
|  |   *margin-top: -1px; | ||||||
|  |   -webkit-overflow-scrolling: touch; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td { | ||||||
|  |   vertical-align: middle; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing, | ||||||
|  | .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing, | ||||||
|  | .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing { | ||||||
|  |   height: 0; | ||||||
|  |   overflow: hidden; | ||||||
|  |   margin: 0 !important; | ||||||
|  |   padding: 0 !important; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper.no-footer .dataTables_scrollBody { | ||||||
|  |   border-bottom: 1px solid #111; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable, | ||||||
|  | .dataTables_wrapper.no-footer div.dataTables_scrollBody > table { | ||||||
|  |   border-bottom: none; | ||||||
|  | } | ||||||
|  | .dataTables_wrapper:after { | ||||||
|  |   visibility: hidden; | ||||||
|  |   display: block; | ||||||
|  |   content: ""; | ||||||
|  |   clear: both; | ||||||
|  |   height: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @media screen and (max-width: 767px) { | ||||||
|  |   .dataTables_wrapper .dataTables_info, | ||||||
|  | .dataTables_wrapper .dataTables_paginate { | ||||||
|  |     float: none; | ||||||
|  |     text-align: center; | ||||||
|  |   } | ||||||
|  |   .dataTables_wrapper .dataTables_paginate { | ||||||
|  |     margin-top: 0.5em; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | @media screen and (max-width: 640px) { | ||||||
|  |   .dataTables_wrapper .dataTables_length, | ||||||
|  | .dataTables_wrapper .dataTables_filter { | ||||||
|  |     float: none; | ||||||
|  |     text-align: center; | ||||||
|  |   } | ||||||
|  |   .dataTables_wrapper .dataTables_filter { | ||||||
|  |     margin-top: 0.5em; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
							
								
								
									
										
											BIN
										
									
								
								docs/_static/images/IPSec_close_action_settings.jpg
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 61 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/images/VyOS_Dual-Hub_DMVPN.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 66 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/images/openvpn_site2site_diagram.jpg
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 24 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/images/password-recovery-01.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 26 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/images/vrf-example-topology-01.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 32 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/images/wireguard_qrcode.jpg
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 131 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/images/wireguard_site2site_diagram.jpg
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 20 KiB | 
							
								
								
									
										15389
									
								
								docs/_static/js/datatables.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										4
									
								
								docs/_static/js/tables.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,4 @@ | |||||||
|  | $(document).ready(function() { | ||||||
|  |     $('#table-cfgcmd').DataTable(); | ||||||
|  |     $('#table-opcmd').DataTable(); | ||||||
|  | } ); | ||||||
							
								
								
									
										6
									
								
								docs/_templates/layout.html
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,4 +1,8 @@ | |||||||
| {% extends "!layout.html" %} | {% extends "!layout.html" %} | ||||||
|  | {%- set current_version = "1.3.x equuleus" %} | ||||||
| {% block extrahead %} | {% block extrahead %} | ||||||
|     <link href="{{ pathto("_static/css/custom.css", True) }}" rel="stylesheet" type="text/css"> |     <link href="{{ pathto("_static/css/custom.css", True) }}" rel="stylesheet" type="text/css"> | ||||||
| {% endblock %} |     <link href="{{ pathto("_static/css/datatables.css", True) }}" rel="stylesheet" type="text/css"> | ||||||
|  |     <script type="text/javascript" charset="utf8" src="{{ pathto("_static/js/datatables.js", True) }}"></script> | ||||||
|  |     <script type="text/javascript" charset="utf8" src="{{ pathto("_static/js/tables.js", True) }}"></script> | ||||||
|  | {% endblock %} | ||||||
|  | |||||||
							
								
								
									
										118
									
								
								docs/automation/cloud-init.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,118 @@ | |||||||
|  | :lastproofread: 2022-08-24 | ||||||
|  | 
 | ||||||
|  | .. _cloud-init: | ||||||
|  | 
 | ||||||
|  | ############### | ||||||
|  | VyOS cloud-init | ||||||
|  | ############### | ||||||
|  | 
 | ||||||
|  | Cloud and virtualized instances of VyOS are initialized using the | ||||||
|  | industry-standard cloud-init. Via cloud-init, the system performs tasks such as | ||||||
|  | injecting SSH keys and configuring the network. In addition, the user can supply | ||||||
|  | a custom configuration at the time of instance launch. | ||||||
|  | 
 | ||||||
|  | ************** | ||||||
|  | Config Sources | ||||||
|  | ************** | ||||||
|  | 
 | ||||||
|  | VyOS support three types of config sources. | ||||||
|  | 
 | ||||||
|  | * Metadata - Metadata is sourced by the cloud platform or hypervisor. | ||||||
|  |   In some clouds, there is implemented as an HTTP endpoint at | ||||||
|  |   http://169.254.169.254. | ||||||
|  | * Network configuration - This config source informs the system about the | ||||||
|  |   network settings like IP addresses, routes, DNS. Available only in several | ||||||
|  |   cloud and virtualization platforms. | ||||||
|  | * User-data - User-data is specified by the user. This config source offers the | ||||||
|  |   ability to insert any CLI configuration commands into the configuration before | ||||||
|  |   the first boot. | ||||||
|  | 
 | ||||||
|  | ********* | ||||||
|  | User-data | ||||||
|  | ********* | ||||||
|  | 
 | ||||||
|  | Major cloud providers offer a means of providing user-data at the time of | ||||||
|  | instance launch. It can be provided as plain text or as base64-encoded text, | ||||||
|  | depending on cloud provider. Also, it can be compressed using gzip, which makes | ||||||
|  | sense with a long configuration commands list, because of the hard limit to | ||||||
|  | ~16384 bytes for the whole user-data. | ||||||
|  | 
 | ||||||
|  | The easiest way to configure the system via user-data is the Cloud-config syntax | ||||||
|  | described below. | ||||||
|  | 
 | ||||||
|  | ******************** | ||||||
|  | Cloud-config modules | ||||||
|  | ******************** | ||||||
|  | 
 | ||||||
|  | In VyOS, by default, enabled only two modules: | ||||||
|  | 
 | ||||||
|  | * ``write_files`` - this module allows to insert any files into the filesystem | ||||||
|  |   before the first boot, for example, pre-generated encryption keys, | ||||||
|  |   certificates, or even a whole ``config.boot`` file. | ||||||
|  | * ``vyos_userdata`` - the module accepts a list of CLI configuration commands in | ||||||
|  |   a ``vyos_config_commands`` section, which gives an easy way to configure the | ||||||
|  |   system during deployment. | ||||||
|  | 
 | ||||||
|  | ************************ | ||||||
|  | cloud-config file format | ||||||
|  | ************************ | ||||||
|  | 
 | ||||||
|  | A cloud-config document is written in YAML. The file must begin | ||||||
|  | with ``#cloud-config`` line. The key used to designate a VyOS configuration | ||||||
|  | is ``vyos_config_commands``. What follows is VyOS configuration using | ||||||
|  | the "set-style" syntax. Both "set" and "delete" commands are supported. | ||||||
|  | 
 | ||||||
|  | Commands requirements: | ||||||
|  | 
 | ||||||
|  | * one command per line | ||||||
|  | * if command ends in a value, it must be inside single quotes | ||||||
|  | * a single-quote symbol is not allowed inside command or value | ||||||
|  | 
 | ||||||
|  | The commands list produced by the ``show configuration commands`` command on a | ||||||
|  | VyOS router should comply with all the requirements, so it is easy to get a  | ||||||
|  | proper commands list by copying it from another router. | ||||||
|  | 
 | ||||||
|  | The configuration specified in the cloud-config document overwrites default | ||||||
|  | configuration values and values configured via Metadata. | ||||||
|  | 
 | ||||||
|  | Here is an example cloud-config. | ||||||
|  | 
 | ||||||
|  | .. code-block:: yaml | ||||||
|  | 
 | ||||||
|  |    #cloud-config | ||||||
|  |    vyos_config_commands: | ||||||
|  |      - set system host-name 'vyos-prod-ashburn' | ||||||
|  |      - set system ntp server 1.pool.ntp.org | ||||||
|  |      - set system ntp server 2.pool.ntp.org | ||||||
|  |      - delete interfaces ethernet eth1 address 'dhcp' | ||||||
|  |      - set interfaces ethernet eth1 address '192.0.2.247/24' | ||||||
|  |      - set protocols static route 198.51.100.0/24 next-hop '192.0.2.1' | ||||||
|  | 
 | ||||||
|  | ************************* | ||||||
|  | System Defaults/Fallbacks | ||||||
|  | ************************* | ||||||
|  | 
 | ||||||
|  | These are the VyOS defaults and fallbacks. | ||||||
|  | 
 | ||||||
|  | * SSH is configured on port 22 | ||||||
|  | * ``vyos``/``vyos`` credentials if no others specified by data source | ||||||
|  | * DHCP on first Ethernet interface if no network configuration is provided | ||||||
|  | 
 | ||||||
|  | All of these can be overridden using the configuration in user-data. | ||||||
|  | 
 | ||||||
|  | *************** | ||||||
|  | Troubleshooting | ||||||
|  | *************** | ||||||
|  | 
 | ||||||
|  | If you encounter problems, verify that the cloud-config document contains | ||||||
|  | valid YAML. Online resources such as https://www.yamllint.com/ provide a | ||||||
|  | simple tool for validating YAML. | ||||||
|  | 
 | ||||||
|  | cloud-init logs to /var/log/cloud-init.log. This file can be helpful in | ||||||
|  | determining why the configuration varies from what you expect. You can fetch the | ||||||
|  | most important data filtering output for ``vyos`` keyword: | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |     sudo grep vyos /var/log/cloud-init.log | ||||||
|  | 
 | ||||||
| @ -1,3 +1,5 @@ | |||||||
|  | :lastproofread: 2023-01-16 | ||||||
|  | 
 | ||||||
| .. _command-scripting: | .. _command-scripting: | ||||||
| 
 | 
 | ||||||
| Command Scripting | Command Scripting | ||||||
| @ -33,7 +35,7 @@ example, if you want to disable a BGP peer on VRRP transition to backup: | |||||||
| Run operational commands | Run operational commands | ||||||
| ------------------------ | ------------------------ | ||||||
| 
 | 
 | ||||||
| Unlike a normal configuration sessions, all operational commands must be | Unlike a normal configuration session, all operational commands must be | ||||||
| prepended with ``run``, even if you haven't created a session with configure. | prepended with ``run``, even if you haven't created a session with configure. | ||||||
| 
 | 
 | ||||||
| .. code-block:: none | .. code-block:: none | ||||||
| @ -43,9 +45,36 @@ prepended with ``run``, even if you haven't created a session with configure. | |||||||
|   run show interfaces |   run show interfaces | ||||||
|   exit |   exit | ||||||
| 
 | 
 | ||||||
| Other script language | Run commands remotely | ||||||
| --------------------- | --------------------- | ||||||
| 
 | 
 | ||||||
|  | Sometimes you simply wan't to execute a bunch of op-mode commands via SSH on | ||||||
|  | a remote VyOS system. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   ssh 192.0.2.1 'vbash -s' <<EOF | ||||||
|  |   source /opt/vyatta/etc/functions/script-template | ||||||
|  |   run show interfaces | ||||||
|  |   exit | ||||||
|  |   EOF | ||||||
|  | 
 | ||||||
|  | Will return: | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   Welcome to VyOS | ||||||
|  |   Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down | ||||||
|  |   Interface        IP Address                        S/L  Description | ||||||
|  |   ---------        ----------                        ---  ----------- | ||||||
|  |   eth0             192.0.2.1/24                      u/u | ||||||
|  |   lo               127.0.0.1/8                       u/u | ||||||
|  |                   ::1/128 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Other script languages | ||||||
|  | ---------------------- | ||||||
|  | 
 | ||||||
| If you want to script the configs in a language other than bash you can have | If you want to script the configs in a language other than bash you can have | ||||||
| your script output commands and then source them in a bash script. | your script output commands and then source them in a bash script. | ||||||
| 
 | 
 | ||||||
| @ -104,14 +133,71 @@ group, the script can be safeguarded like this: | |||||||
|       exec sg vyattacfg -c "/bin/vbash $(readlink -f $0) $@" |       exec sg vyattacfg -c "/bin/vbash $(readlink -f $0) $@" | ||||||
|   fi |   fi | ||||||
| 
 | 
 | ||||||
|  | Executing pre-hooks/post-hooks Scripts | ||||||
|  | -------------------------------------- | ||||||
|  | 
 | ||||||
|  | VyOS has the ability to run custom  scripts before and after each commit | ||||||
|  | 
 | ||||||
|  | The default directories where your custom Scripts should be located are: | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   /config/scripts/commit/pre-hooks.d   - Directory with scripts that run before | ||||||
|  |                                          each commit. | ||||||
|  | 
 | ||||||
|  |   /config/scripts/commit/post-hooks.d  - Directory with scripts that run after | ||||||
|  |                                          each commit. | ||||||
|  | 
 | ||||||
|  | Scripts are run in alphabetical order. Their names must consist entirely of | ||||||
|  | ASCII upper- and lower-case letters,ASCII digits, ASCII underscores, and | ||||||
|  | ASCII minus-hyphens.No other characters are allowed. | ||||||
|  | 
 | ||||||
|  | .. note:: Custom scripts are not executed with root privileges | ||||||
|  |    (Use sudo inside if this is necessary). | ||||||
|  | 
 | ||||||
|  | A simple example is shown below, where the ops command executed in | ||||||
|  | the post-hook script is "show interfaces". | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   vyos@vyos# set interfaces ethernet eth1  address 192.0.2.3/24 | ||||||
|  |   vyos@vyos# commit | ||||||
|  |   Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down | ||||||
|  |   Interface        IP Address                        S/L  Description | ||||||
|  |   ---------        ----------                        ---  ----------- | ||||||
|  |   eth0             198.51.100.10/24                  u/u | ||||||
|  |   eth1             192.0.2.3/24                      u/u | ||||||
|  |   eth2             -                                 u/u | ||||||
|  |   eth3             -                                 u/u | ||||||
|  |   lo               203.0.113.5/24                    u/u | ||||||
|  | 
 | ||||||
|  | Preconfig on boot | ||||||
|  | ----------------- | ||||||
|  | 
 | ||||||
|  | The ``/config/scripts/vyos-preconfig-bootup.script`` script is called on boot | ||||||
|  | before the VyOS configuration during boot process. | ||||||
|  | 
 | ||||||
|  | Any modifications were done to work around unfixed bugs and implement | ||||||
|  | enhancements that are not complete in the VyOS system can be placed here. | ||||||
|  | 
 | ||||||
|  | The default file looks like this: | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   #!/bin/sh | ||||||
|  |   # This script is executed at boot time before VyOS configuration is applied. | ||||||
|  |   # Any modifications required to work around unfixed bugs or use | ||||||
|  |   # services not available through the VyOS CLI system can be placed here. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| Postconfig on boot | Postconfig on boot | ||||||
| ------------------ | ------------------ | ||||||
| 
 | 
 | ||||||
| The ``/config/scripts/vyos-postconfig-bootup.script`` script is called on boot | The ``/config/scripts/vyos-postconfig-bootup.script`` script is called on boot | ||||||
| after the VyOS configuration is fully applied. | after the VyOS configuration is fully applied. | ||||||
| 
 | 
 | ||||||
| Any modifications done to work around unfixed bugs and implement enhancements | Any modifications were done to work around unfixed bugs and implement | ||||||
| which are not complete in the VyOS system can be placed here. | enhancements that are not complete in the VyOS system can be placed here. | ||||||
| 
 | 
 | ||||||
| The default file looks like this: | The default file looks like this: | ||||||
| 
 | 
 | ||||||
| @ -124,4 +210,4 @@ The default file looks like this: | |||||||
| 
 | 
 | ||||||
| .. hint:: For configuration/upgrade management issues, modification of this | .. hint:: For configuration/upgrade management issues, modification of this | ||||||
|    script should be the last option. Always try to find solutions based on CLI |    script should be the last option. Always try to find solutions based on CLI | ||||||
|    commands first. |    commands first. | ||||||
| @ -3,13 +3,16 @@ VyOS Automation | |||||||
| ############### | ############### | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   * Ansible |  | ||||||
|   * Saltstack |   * Saltstack | ||||||
|   * HTTP-API |  | ||||||
|   * startup scripts |   * startup scripts | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| .. toctree:: | .. toctree:: | ||||||
|    :maxdepth: 1 |    :maxdepth: 1 | ||||||
| 
 |     | ||||||
|    command-scripting |    vyos-api | ||||||
|  |    vyos-ansible | ||||||
|  |    vyos-napalm | ||||||
|  |    vyos-netmiko | ||||||
|  |    command-scripting | ||||||
|  |    cloud-init | ||||||
							
								
								
									
										93
									
								
								docs/automation/vyos-ansible.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,93 @@ | |||||||
|  | :lastproofread: 2023-01-16 | ||||||
|  | 
 | ||||||
|  | .. _vyos-ansible: | ||||||
|  | 
 | ||||||
|  | Ansible | ||||||
|  | ======= | ||||||
|  | 
 | ||||||
|  | VyOS supports configuration via ansible. | ||||||
|  | Need to install ``ansible`` and ``python3-paramiko`` module | ||||||
|  | 
 | ||||||
|  | Structure of files | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |  . | ||||||
|  |  ├── ansible.cfg | ||||||
|  |  ├── files | ||||||
|  |  │   └── id_rsa_docker.pub | ||||||
|  |  ├── hosts | ||||||
|  |  └── main.yml | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | File contents | ||||||
|  | ------------- | ||||||
|  | 
 | ||||||
|  | ansible.cfg | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   [defaults] | ||||||
|  |   host_key_checking = no | ||||||
|  |   retry_files_enabled = False | ||||||
|  |   ANSIBLE_INVENTORY_UNPARSED_FAILED = true | ||||||
|  | 
 | ||||||
|  | id_rsa_docker.pub. Needs to declare only public key exactly. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   AAAAB3NzaC1yc2EAAAADAQABAAABAQCoDgfhQJuJRFWJijHn7ZinZ3NWp4hWVrt7HFcvn0kgtP/5PeCtMt | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | hosts | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   [vyos_hosts] | ||||||
|  |   r11 ansible_ssh_host=192.0.2.11 | ||||||
|  | 
 | ||||||
|  |   [vyos_hosts:vars] | ||||||
|  |   ansible_python_interpreter=/usr/bin/python3 | ||||||
|  |   ansible_user=vyos | ||||||
|  |   ansible_ssh_pass=vyos | ||||||
|  |   ansible_network_os=vyos | ||||||
|  |   ansible_connection=network_cli | ||||||
|  | 
 | ||||||
|  | main.yml | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   --- | ||||||
|  | 
 | ||||||
|  |   - hosts: r11 | ||||||
|  | 
 | ||||||
|  |     connection: network_cli | ||||||
|  |     gather_facts: 'no' | ||||||
|  | 
 | ||||||
|  |     tasks: | ||||||
|  |       - name: Configure remote r11 | ||||||
|  |         vyos_config: | ||||||
|  |           lines: | ||||||
|  |             - set system host-name r11 | ||||||
|  |             - set system name-server 203.0.113.254 | ||||||
|  |             - set service ssh disable-host-validation | ||||||
|  |             - set system login user vyos authentication public-keys docker@work type ssh-rsa | ||||||
|  |             - set system login user vyos authentication public-keys docker@work key "{{ lookup('file', 'id_rsa_docker.pub') }}" | ||||||
|  |             - set system time-zone America/Los_Angeles | ||||||
|  |             - set interfaces ethernet eth0 description WAN | ||||||
|  | 
 | ||||||
|  | Run ansible | ||||||
|  | ----------- | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   $ ansible-playbook -i hosts main.yml  | ||||||
|  | 
 | ||||||
|  |   PLAY [r11] ****************************************************************************************************************************************************************************************************** | ||||||
|  | 
 | ||||||
|  |   TASK [Configure remote r11] ************************************************************************************************************************************************************************************* | ||||||
|  |   changed: [r11] | ||||||
|  | 
 | ||||||
|  |   PLAY RECAP ***************************************************************************************************************************************************************************************************** | ||||||
|  |   r11                         : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 | ||||||
|  | 
 | ||||||
							
								
								
									
										336
									
								
								docs/automation/vyos-api.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,336 @@ | |||||||
|  | :lastproofread: 2023-01-16 | ||||||
|  | 
 | ||||||
|  | .. _vyosapi: | ||||||
|  | 
 | ||||||
|  | ######## | ||||||
|  | VyOS API | ||||||
|  | ######## | ||||||
|  | 
 | ||||||
|  | For configuration and enabling the API see :ref:`http-api` | ||||||
|  | 
 | ||||||
|  | ************** | ||||||
|  | Authentication | ||||||
|  | ************** | ||||||
|  | 
 | ||||||
|  | All endpoints only listen on HTTP POST requests and the API KEY must set as | ||||||
|  | ``key`` in the formdata. | ||||||
|  | 
 | ||||||
|  | Below see one example for curl and one for python. | ||||||
|  | The rest of the documentation is reduced to curl. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    curl --location --request POST 'https://vyos/retrieve' \ | ||||||
|  |    --form data='{"op": "showConfig", "path": []}' \ | ||||||
|  |    --form key='MY-HTTPS-API-PLAINTEXT-KEY' | ||||||
|  | 
 | ||||||
|  | .. code-block:: python | ||||||
|  | 
 | ||||||
|  |    import requests | ||||||
|  |    url = "https://vyos/retrieve" | ||||||
|  |    payload={'data': '{"op": "showConfig", "path": []}', | ||||||
|  |             'key': 'MY-HTTPS-API-PLAINTEXT-KEY' | ||||||
|  |            } | ||||||
|  |    headers = {} | ||||||
|  |    response = requests.request("POST", url, headers=headers, data=payload) | ||||||
|  |    print(response.text) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ************* | ||||||
|  | API Endpoints | ||||||
|  | ************* | ||||||
|  | 
 | ||||||
|  | /retrieve | ||||||
|  | ========= | ||||||
|  | 
 | ||||||
|  | With the ``retrieve`` endpoint you get parts or the whole configuration. | ||||||
|  | 
 | ||||||
|  | To get the whole configuration, pass an empty list to the ``path`` field  | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    curl --location --request POST 'https://vyos/retrieve' \ | ||||||
|  |    --form data='{"op": "showConfig", "path": []}' \ | ||||||
|  |    --form key='MY-HTTPS-API-PLAINTEXT-KEY' | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    response (shorted) | ||||||
|  |    { | ||||||
|  |       "success": true, | ||||||
|  |       "data": { | ||||||
|  |          "interfaces": { | ||||||
|  |                "ethernet": { | ||||||
|  |                   "eth0": { | ||||||
|  |                      "address": "dhcp", | ||||||
|  |                      "duplex": "auto", | ||||||
|  |                      "hw-id": "50:00:00:01:00:00", | ||||||
|  |                      "speed": "auto" | ||||||
|  |                   }, | ||||||
|  |                   "eth1": { | ||||||
|  |                      "duplex": "auto", | ||||||
|  |                      "hw-id": "50:00:00:01:00:01", | ||||||
|  |                      "speed": "auto" | ||||||
|  |       ... | ||||||
|  |       }, | ||||||
|  |       "error": null | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | To only get a part of the configuration, for example ``system syslog``. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    curl -k --location --request POST 'https://vyos/retrieve' \ | ||||||
|  |    --form data='{"op": "showConfig", "path": ["system", "syslog"]}' \ | ||||||
|  |    --form key='MY-HTTPS-API-PLAINTEXT-KEY' | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    response: | ||||||
|  |    { | ||||||
|  |       "success": true, | ||||||
|  |       "data": { | ||||||
|  |          "global": { | ||||||
|  |                "facility": { | ||||||
|  |                   "all": { | ||||||
|  |                      "level": "info" | ||||||
|  |                   }, | ||||||
|  |                   "protocols": { | ||||||
|  |                      "level": "debug" | ||||||
|  |                   } | ||||||
|  |                } | ||||||
|  |          } | ||||||
|  |       }, | ||||||
|  |       "error": null | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  | if you just want the Value of a multi-valued node, use the ``returnValues`` | ||||||
|  | operation. | ||||||
|  | 
 | ||||||
|  | For example, get the addresses of a ``dum0`` interface. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    curl -k --location --request POST 'https://vyos/retrieve' \ | ||||||
|  |    --form data='{"op": "returnValues", "path": ["interfaces","dummy","dum0","address"]}' \ | ||||||
|  |    --form key='MY-HTTPS-API-PLAINTEXT-KEY' | ||||||
|  | 
 | ||||||
|  |    respone: | ||||||
|  |    { | ||||||
|  |       "success": true, | ||||||
|  |       "data": [ | ||||||
|  |          "10.10.10.10/24", | ||||||
|  |          "10.10.10.11/24", | ||||||
|  |          "10.10.10.12/24" | ||||||
|  |       ], | ||||||
|  |       "error": null | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  | /reset | ||||||
|  | ====== | ||||||
|  | 
 | ||||||
|  | The ``reset`` endpoint run a ``reset`` command. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    curl --location --request POST 'https://vyos/reset' \ | ||||||
|  |    --form data='{"op": "reset", "path": ["ip", "bgp", "192.0.2.11"]}' \ | ||||||
|  |    --form key='MY-HTTPS-API-PLAINTEXT-KEY' | ||||||
|  | 
 | ||||||
|  |    respone: | ||||||
|  |    { | ||||||
|  |      "success": true, | ||||||
|  |      "data": "", | ||||||
|  |      "error": null | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  | /image | ||||||
|  | ====== | ||||||
|  | 
 | ||||||
|  | To add or delete an image, use the ``/image`` endpoint. | ||||||
|  | 
 | ||||||
|  | add an image | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    curl -k --location --request POST 'https://vyos/image' \ | ||||||
|  |    --form data='{"op": "add", "url": "https://downloads.vyos.io/rolling/current/amd64/vyos-rolling-latest.iso"}' \ | ||||||
|  |    --form key='MY-HTTPS-API-PLAINTEXT-KEY' | ||||||
|  | 
 | ||||||
|  |    respone (shorted): | ||||||
|  |    { | ||||||
|  |       "success": true, | ||||||
|  |       "data": "Trying to fetch ISO file from https://downloads.vyos.io/rolling-latest.iso\n | ||||||
|  |                ... | ||||||
|  |                Setting up grub configuration...\nDone.\n", | ||||||
|  |       "error": null | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  | delete an image, for example ``1.3-rolling-202006070117`` | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    curl -k --location --request POST 'https://vyos/image' \ | ||||||
|  |    --form data='{"op": "delete", "name": "1.3-rolling-202006070117"}' \ | ||||||
|  |    --form key='MY-HTTPS-API-PLAINTEXT-KEY' | ||||||
|  | 
 | ||||||
|  |    response: | ||||||
|  |    { | ||||||
|  |       "success": true, | ||||||
|  |       "data": "Deleting the \"1.3-rolling-202006070117\" image...\nDone\n", | ||||||
|  |       "error": null | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /show | ||||||
|  | ===== | ||||||
|  | 
 | ||||||
|  | The ``/show`` endpoint is to show everything in the operational mode. | ||||||
|  | 
 | ||||||
|  | For example, show which images are installed. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    curl -k --location --request POST 'https://vyos/show' \ | ||||||
|  |    --form data='{"op": "show", "path": ["system", "image"]}' \ | ||||||
|  |    --form key='MY-HTTPS-API-PLAINTEXT-KEY' | ||||||
|  | 
 | ||||||
|  |    response: | ||||||
|  |    { | ||||||
|  |       "success": true, | ||||||
|  |       "data": "The system currently has the following image(s) installed:\n\n | ||||||
|  |                 1: 1.4-rolling-202102280559 (default boot)\n | ||||||
|  |                 2: 1.4-rolling-202102230218\n | ||||||
|  |                 3: 1.3-beta-202102210443\n\n", | ||||||
|  |       "error": null | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /generate | ||||||
|  | ========= | ||||||
|  | 
 | ||||||
|  | The ``generate`` endpoint run a ``generate`` command. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    curl -k --location --request POST 'https://vyos/generate' \ | ||||||
|  |    --form data='{"op": "generate", "path": ["wireguard", "default-keypair"]}' \ | ||||||
|  |    --form key='MY-HTTPS-API-PLAINTEXT-KEY' | ||||||
|  | 
 | ||||||
|  |    response: | ||||||
|  |    { | ||||||
|  |       "success": true, | ||||||
|  |       "data": "", | ||||||
|  |       "error": null | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /configure | ||||||
|  | ========== | ||||||
|  | 
 | ||||||
|  | You can pass a ``set``, ``delete`` or ``comment`` command to the | ||||||
|  | ``/configure`` endpoint. | ||||||
|  | 
 | ||||||
|  | ``set`` a single command | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    curl -k --location --request POST 'https://vyos/configure' \ | ||||||
|  |    --form data='{"op": "set", "path": ["interfaces", "dummy", "dum1", "address", "10.11.0.1/32"]}' \ | ||||||
|  |    --form key='MY-HTTPS-API-PLAINTEXT-KEY' | ||||||
|  | 
 | ||||||
|  |    response: | ||||||
|  |    { | ||||||
|  |       "success": true, | ||||||
|  |       "data": null, | ||||||
|  |       "error": null | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ``delete`` a single command | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    curl -k --location --request POST 'https://vyos/configure' \ | ||||||
|  |    --form data='{"op": "delete", "path": ["interfaces", "dummy", "dum1", "address", "10.11.0.1/32"]}' \ | ||||||
|  |    --form key='MY-HTTPS-API-PLAINTEXT-KEY' | ||||||
|  | 
 | ||||||
|  |    response: | ||||||
|  |    { | ||||||
|  |       "success": true, | ||||||
|  |       "data": null, | ||||||
|  |       "error": null | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  | The API pushes every request to a session and commit it. | ||||||
|  | But some of VyOS components like DHCP and PPPoE Servers, IPSec, VXLAN, and | ||||||
|  | other tunnels require full configuration for commit.  | ||||||
|  | The endpoint will process multiple commands when you pass them as a list to | ||||||
|  | the ``data`` field. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    curl -k --location --request POST 'https://vyos/configure' \ | ||||||
|  |    --form data='[{"op": "set","path":["interfaces","vxlan","vxlan1","remote","203.0.113.99"]}, {"op": "set","path":["interfaces","vxlan","vxlan1","vni","1"]}]' \ | ||||||
|  |    --form key='MY-HTTPS-API-PLAINTEXT-KEY' | ||||||
|  | 
 | ||||||
|  |    response: | ||||||
|  |    { | ||||||
|  |       "success": true, | ||||||
|  |       "data": null, | ||||||
|  |       "error": null | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /config-file | ||||||
|  | ============ | ||||||
|  | 
 | ||||||
|  | The endpoint ``/config-file`` is to save or load a configuration. | ||||||
|  | 
 | ||||||
|  | Save a running configuration to the startup configuration. | ||||||
|  | When you don't specify the file when saving, it saves to | ||||||
|  | ``/config/config.boot``. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    curl -k --location --request POST 'https://vyos/config-file' \ | ||||||
|  |    --form data='{"op": "save"}' \ | ||||||
|  |    --form key='MY-HTTPS-API-PLAINTEXT-KEY' | ||||||
|  | 
 | ||||||
|  |    response: | ||||||
|  |    { | ||||||
|  |       "success": true, | ||||||
|  |       "data": "Saving configuration to '/config/config.boot'...\nDone\n", | ||||||
|  |       "error": null | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Save a running configuration to a file. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    curl -k --location --request POST 'https://vyos/config-file' \ | ||||||
|  |    --form data='{"op": "save", "file": "/config/test.config"}' \ | ||||||
|  |    --form key='MY-HTTPS-API-PLAINTEXT-KEY' | ||||||
|  | 
 | ||||||
|  |    response: | ||||||
|  |    { | ||||||
|  |       "success": true, | ||||||
|  |       "data": "Saving configuration to '/config/test.config'...\nDone\n", | ||||||
|  |       "error": null | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | To Load a configuration file. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    curl -k --location --request POST 'https://vyos/config-file' \ | ||||||
|  |    --form data='{"op": "load", "file": "/config/test.config"}' \ | ||||||
|  |    --form key='MY-HTTPS-API-PLAINTEXT-KEY' | ||||||
|  | 
 | ||||||
|  |    response: | ||||||
|  |    { | ||||||
|  |       "success": true, | ||||||
|  |       "data": null, | ||||||
|  |       "error": null | ||||||
|  |    } | ||||||
							
								
								
									
										144
									
								
								docs/automation/vyos-napalm.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,144 @@ | |||||||
|  | :lastproofread: 2023-01-16 | ||||||
|  | 
 | ||||||
|  | .. _vyos-napalm: | ||||||
|  | 
 | ||||||
|  | Napalm | ||||||
|  | ====== | ||||||
|  | 
 | ||||||
|  | VyOS supports some napalm_ functions for configuration and op-mode. | ||||||
|  | It requires more tests. | ||||||
|  | 
 | ||||||
|  | Install ``napalm-vyos`` module | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   apt install python3-pip | ||||||
|  |   pip3 install napalm | ||||||
|  |   pip3 install napalm-vyos | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Op-mode | ||||||
|  | ------- | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   #!/usr/bin/env python3 | ||||||
|  | 
 | ||||||
|  |   import json | ||||||
|  |   from napalm import get_network_driver | ||||||
|  | 
 | ||||||
|  |   driver = get_network_driver('vyos') | ||||||
|  | 
 | ||||||
|  |   vyos_router = driver( | ||||||
|  |       hostname="192.0.2.1", | ||||||
|  |       username="vyos", | ||||||
|  |       password="vyospass", | ||||||
|  |       optional_args={"port": 22}, | ||||||
|  |   ) | ||||||
|  | 
 | ||||||
|  |   vyos_router.open() | ||||||
|  |   output = vyos_router.get_facts() | ||||||
|  |   print(json.dumps(output, indent=4)) | ||||||
|  | 
 | ||||||
|  |   output = vyos_router.get_arp_table() | ||||||
|  |   print(json.dumps(output, indent=4)) | ||||||
|  | 
 | ||||||
|  |   vyos_router.close() | ||||||
|  | 
 | ||||||
|  | Output op-mode | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   $ ./vyos-napalm.py | ||||||
|  |   { | ||||||
|  |       "uptime": 7185, | ||||||
|  |       "vendor": "VyOS", | ||||||
|  |       "os_version": "1.3.0-rc5", | ||||||
|  |       "serial_number": "", | ||||||
|  |       "model": "Standard PC (Q35 + ICH9, 2009)", | ||||||
|  |       "hostname": "r4-1.3", | ||||||
|  |       "fqdn": "vyos.local", | ||||||
|  |       "interface_list": [ | ||||||
|  |           "eth0", | ||||||
|  |           "eth1", | ||||||
|  |           "eth2", | ||||||
|  |           "lo", | ||||||
|  |           "vtun10" | ||||||
|  |       ] | ||||||
|  |   } | ||||||
|  |   [ | ||||||
|  |       { | ||||||
|  |           "interface": "eth1", | ||||||
|  |           "mac": "52:54:00:b2:38:2c", | ||||||
|  |           "ip": "192.0.2.2", | ||||||
|  |           "age": 0.0 | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |           "interface": "eth0", | ||||||
|  |           "mac": "52:54:00:a2:b9:5b", | ||||||
|  |           "ip": "203.0.113.11", | ||||||
|  |           "age": 0.0 | ||||||
|  |       } | ||||||
|  |   ] | ||||||
|  | 
 | ||||||
|  | Configuration | ||||||
|  | ------------- | ||||||
|  | 
 | ||||||
|  | We need 2 files, commands.conf and script itself. | ||||||
|  | 
 | ||||||
|  | Content of commands.conf | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   set service ssh disable-host-validation | ||||||
|  |   set service ssh port '2222' | ||||||
|  |   set system name-server '192.0.2.8' | ||||||
|  |   set system name-server '203.0.113.8' | ||||||
|  |   set interfaces ethernet eth1 description 'FOO' | ||||||
|  | 
 | ||||||
|  | Script vyos-napalm.py | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   #!/usr/bin/env python3 | ||||||
|  | 
 | ||||||
|  |   from napalm import get_network_driver | ||||||
|  | 
 | ||||||
|  |   driver = get_network_driver('vyos') | ||||||
|  | 
 | ||||||
|  |   vyos_router = driver( | ||||||
|  |       hostname="192.0.2.1", | ||||||
|  |       username="vyos", | ||||||
|  |       password="vyospass", | ||||||
|  |       optional_args={"port": 22}, | ||||||
|  |   ) | ||||||
|  | 
 | ||||||
|  |   vyos_router.open() | ||||||
|  |   vyos_router.load_merge_candidate(filename='commands.conf') | ||||||
|  |   diffs = vyos_router.compare_config() | ||||||
|  | 
 | ||||||
|  |   if bool(diffs) == True: | ||||||
|  |       print(diffs) | ||||||
|  |       vyos_router.commit_config() | ||||||
|  |   else: | ||||||
|  |       print('No configuration changes to commit') | ||||||
|  |       vyos_router.discard_config() | ||||||
|  | 
 | ||||||
|  |   vyos_router.close() | ||||||
|  | 
 | ||||||
|  | Output | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   $./vyos-napalm.py  | ||||||
|  |   [edit interfaces ethernet eth1] | ||||||
|  |   +description FOO | ||||||
|  |   [edit service ssh] | ||||||
|  |   +disable-host-validation | ||||||
|  |   +port 2222 | ||||||
|  |   [edit system] | ||||||
|  |   +name-server 192.0.2.8 | ||||||
|  |   +name-server 203.0.113.8 | ||||||
|  |   [edit] | ||||||
|  | 
 | ||||||
|  | .. _napalm: https://napalm.readthedocs.io/en/latest/base.html | ||||||
							
								
								
									
										72
									
								
								docs/automation/vyos-netmiko.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,72 @@ | |||||||
|  | :lastproofread: 2023-01-16 | ||||||
|  | 
 | ||||||
|  | .. _vyos-netmiko: | ||||||
|  | 
 | ||||||
|  | Netmiko | ||||||
|  | ======= | ||||||
|  | 
 | ||||||
|  | VyOS supports configuration via netmiko_. | ||||||
|  | It requires to install ``python3-netmiko`` module. | ||||||
|  | 
 | ||||||
|  | Example | ||||||
|  | ------- | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   #!/usr/bin/env python3 | ||||||
|  | 
 | ||||||
|  |   from netmiko import ConnectHandler | ||||||
|  | 
 | ||||||
|  |   vyos_router = { | ||||||
|  |     "device_type": "vyos", | ||||||
|  |     "host": "192.0.2.1", | ||||||
|  |     "username": "vyos", | ||||||
|  |     "password": "vyospass", | ||||||
|  |     "port": 22, | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |   net_connect = ConnectHandler(**vyos_router) | ||||||
|  | 
 | ||||||
|  |   config_commands = [ | ||||||
|  |                      'set interfaces ethernet eth0 description WAN', | ||||||
|  |                      'set interfaces ethernet eth1 description LAN', | ||||||
|  |                     ] | ||||||
|  | 
 | ||||||
|  |   # set congiguration | ||||||
|  |   output = net_connect.send_config_set(config_commands, exit_config_mode=False) | ||||||
|  |   print(output) | ||||||
|  | 
 | ||||||
|  |   # commit configuration | ||||||
|  |   output = net_connect.commit() | ||||||
|  |   print(output) | ||||||
|  | 
 | ||||||
|  |   # op-mode commands | ||||||
|  |   output = net_connect.send_command("run show interfaces") | ||||||
|  |   print(output) | ||||||
|  | 
 | ||||||
|  | Output | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   $ ./vyos-netmiko.py | ||||||
|  |   configure | ||||||
|  |   set interfaces ethernet eth0 description WAN | ||||||
|  |   [edit] | ||||||
|  |   vyos@r4-1.3# set interfaces ethernet eth1 description LAN | ||||||
|  |   [edit] | ||||||
|  |   vyos@r4-1.3#  | ||||||
|  |   commit | ||||||
|  |   [edit] | ||||||
|  |   vyos@r4-1.3#  | ||||||
|  |   Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down | ||||||
|  |   Interface        IP Address                        S/L  Description | ||||||
|  |   ---------        ----------                        ---  ----------- | ||||||
|  |   eth0             203.0.113.1/24                    u/u  WAN | ||||||
|  |   eth1             192.0.2.1/30                      u/u  LAN | ||||||
|  |   eth2             -                                 u/u   | ||||||
|  |   lo               127.0.0.1/8                       u/u   | ||||||
|  |                    ::1/128                                 | ||||||
|  |   vtun10           10.10.0.1/24                      u/u   | ||||||
|  |   [edit] | ||||||
|  | 
 | ||||||
|  | .. _netmiko: https://github.com/ktbyers/netmiko | ||||||
							
								
								
									
										5632
									
								
								docs/changelog/1.3.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -10,6 +10,7 @@ Changelog | |||||||
|    :maxdepth: 1 |    :maxdepth: 1 | ||||||
|    :includehidden: |    :includehidden: | ||||||
| 
 | 
 | ||||||
|  |    1.3 | ||||||
|    1.2.6 |    1.2.6 | ||||||
|    1.2.5 |    1.2.5 | ||||||
|    1.2.4 |    1.2.4 | ||||||
|  | |||||||
							
								
								
									
										110
									
								
								docs/cli.rst
									
									
									
									
									
								
							
							
						
						| @ -110,7 +110,6 @@ files. | |||||||
| Terminology | Terminology | ||||||
| ########### | ########### | ||||||
| 
 | 
 | ||||||
| live |  | ||||||
| A VyOS system has three major types of configurations: | A VyOS system has three major types of configurations: | ||||||
| 
 | 
 | ||||||
| * **Active** or **running configuration** is the system configuration | * **Active** or **running configuration** is the system configuration | ||||||
| @ -229,6 +228,111 @@ special way on how to :ref:`run_opmode_from_config_mode`. | |||||||
| 
 | 
 | ||||||
| .. _`forum`: https://forum.vyos.io | .. _`forum`: https://forum.vyos.io | ||||||
| 
 | 
 | ||||||
|  | .. opcmd:: show configuration json | ||||||
|  | 
 | ||||||
|  |    View the current active configuration in JSON format. | ||||||
|  | 
 | ||||||
|  |    .. code-block:: none | ||||||
|  | 
 | ||||||
|  |      {"interfaces": {"ethernet": {"eth0": {"address": ["192.0.2.11/24", "192.0.2.35/24"], "hw-id": "52:54:00:48:a0:c6"}, "eth1": {"address": ["203.0.113.1/24"], "hw-id": "52:54:00:fc:50:0b"}}, "loopback": {"lo": {}}}, "protocols": {"static": {"route": {"0.0.0.0/0": {"next-hop": {"192.0.2.254": {}}}}}}, "service": {"ssh": {"disable-host-validation": {}}}, "system": {"config-management": {"commit-revisions": "100"}, "console": {"device": {"ttyS0": {"speed": "115200"}}}, "host-name": "r11-vyos", "login": {"user": {"vyos": {"authentication": {"encrypted-password": "$6$Vt68...F0", "plaintext-password": "", "public-keys": {"vyos@vyos": {"key": "AAAAxxx=", "type": "ssh-rsa"}}}}}}, "name-server": ["203.0.113.254"], "ntp": {"server": {"time1.vyos.net": {}, "time2.vyos.net": {}, "time3.vyos.net": {}}}, "syslog": {"global": {"facility": {"all": {"level": "info"}, "protocols": {"level": "debug"}}}}, "time-zone": "America/New_York"}} | ||||||
|  | 
 | ||||||
|  | .. opcmd:: show configuration json pretty | ||||||
|  | 
 | ||||||
|  |    View the current active configuration in readable JSON format. | ||||||
|  | 
 | ||||||
|  |    .. code-block:: none | ||||||
|  | 
 | ||||||
|  |      { | ||||||
|  |          "interfaces": { | ||||||
|  |              "ethernet": { | ||||||
|  |                  "eth0": { | ||||||
|  |                      "address": [ | ||||||
|  |                          "192.0.2.11/24", | ||||||
|  |                          "192.0.2.35/24" | ||||||
|  |                      ], | ||||||
|  |                      "hw-id": "52:54:00:48:a0:c6" | ||||||
|  |                  }, | ||||||
|  |                  "eth1": { | ||||||
|  |                      "address": [ | ||||||
|  |                          "203.0.113.1/24" | ||||||
|  |                      ], | ||||||
|  |                      "hw-id": "52:54:00:fc:50:0b" | ||||||
|  |                  } | ||||||
|  |              }, | ||||||
|  |              "loopback": { | ||||||
|  |                  "lo": {} | ||||||
|  |              } | ||||||
|  |          }, | ||||||
|  |          "protocols": { | ||||||
|  |              "static": { | ||||||
|  |                  "route": { | ||||||
|  |                      "0.0.0.0/0": { | ||||||
|  |                          "next-hop": { | ||||||
|  |                              "192.0.2.254": {} | ||||||
|  |                          } | ||||||
|  |                      } | ||||||
|  |                  } | ||||||
|  |              } | ||||||
|  |          }, | ||||||
|  |          "service": { | ||||||
|  |              "ssh": { | ||||||
|  |                  "disable-host-validation": {} | ||||||
|  |              } | ||||||
|  |          }, | ||||||
|  |          "system": { | ||||||
|  |              "config-management": { | ||||||
|  |                  "commit-revisions": "100" | ||||||
|  |              }, | ||||||
|  |              "console": { | ||||||
|  |                  "device": { | ||||||
|  |                      "ttyS0": { | ||||||
|  |                          "speed": "115200" | ||||||
|  |                      } | ||||||
|  |                  } | ||||||
|  |              }, | ||||||
|  |              "host-name": "r11-vyos", | ||||||
|  |              "login": { | ||||||
|  |                  "user": { | ||||||
|  |                      "vyos": { | ||||||
|  |                          "authentication": { | ||||||
|  |                              "encrypted-password": "$6$Vt68...F0", | ||||||
|  |                              "plaintext-password": "", | ||||||
|  |                              "public-keys": { | ||||||
|  |                                  "vyos@vyos": { | ||||||
|  |                                      "key": "AAAAxxx=", | ||||||
|  |                                      "type": "ssh-rsa" | ||||||
|  |                                  } | ||||||
|  |                              } | ||||||
|  |                          } | ||||||
|  |                      } | ||||||
|  |                  } | ||||||
|  |              }, | ||||||
|  |              "name-server": [ | ||||||
|  |                  "203.0.113.254" | ||||||
|  |              ], | ||||||
|  |              "ntp": { | ||||||
|  |                  "server": { | ||||||
|  |                      "time1.vyos.net": {}, | ||||||
|  |                      "time2.vyos.net": {}, | ||||||
|  |                      "time3.vyos.net": {} | ||||||
|  |                 } | ||||||
|  |              }, | ||||||
|  |              "syslog": { | ||||||
|  |                  "global": { | ||||||
|  |                      "facility": { | ||||||
|  |                          "all": { | ||||||
|  |                              "level": "info" | ||||||
|  |                          }, | ||||||
|  |                          "protocols": { | ||||||
|  |                              "level": "debug" | ||||||
|  |                          } | ||||||
|  |                      } | ||||||
|  |                  } | ||||||
|  |              }, | ||||||
|  |              "time-zone": "America/New_York" | ||||||
|  |          } | ||||||
|  |      } | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| The config mode | The config mode | ||||||
| --------------- | --------------- | ||||||
| @ -404,7 +508,7 @@ different levels in the hierarchy. | |||||||
|    Use this command to preserve configuration changes upon reboot. By |    Use this command to preserve configuration changes upon reboot. By | ||||||
|    default it is stored at */config/config.boot*. In the case you want |    default it is stored at */config/config.boot*. In the case you want | ||||||
|    to store the configuration file somewhere else, you can add a local |    to store the configuration file somewhere else, you can add a local | ||||||
|    path, an SCP address, an FTP address or a TFTP address.  |    path, a SCP address, a FTP address or a TFTP address.  | ||||||
| 
 | 
 | ||||||
|    .. code-block:: none |    .. code-block:: none | ||||||
| 
 | 
 | ||||||
| @ -455,7 +559,7 @@ different levels in the hierarchy. | |||||||
|    a firewall, and you are not sure there are no mistakes that will lock |    a firewall, and you are not sure there are no mistakes that will lock | ||||||
|    you out of your system. You can use confirmed commit. If you issue |    you out of your system. You can use confirmed commit. If you issue | ||||||
|    the ``commit-confirm`` command, your changes will be commited, and if |    the ``commit-confirm`` command, your changes will be commited, and if | ||||||
|    you don't issue issue the ``confirm`` command in 10 minutes, your |    you don't issue  the ``confirm`` command in 10 minutes, your | ||||||
|    system will reboot into previous config revision. |    system will reboot into previous config revision. | ||||||
| 
 | 
 | ||||||
|    .. code-block:: none |    .. code-block:: none | ||||||
|  | |||||||
| @ -45,6 +45,8 @@ extensions = ['sphinx.ext.intersphinx', | |||||||
|               'sphinx.ext.ifconfig', |               'sphinx.ext.ifconfig', | ||||||
|               'sphinx.ext.graphviz', |               'sphinx.ext.graphviz', | ||||||
|               'notfound.extension', |               'notfound.extension', | ||||||
|  |               'myst_parser', | ||||||
|  |               'sphinx_panels', | ||||||
|               'vyos' |               'vyos' | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| @ -67,6 +69,12 @@ master_doc = 'index' | |||||||
| # Usually you set "language" from the command line for these cases. | # Usually you set "language" from the command line for these cases. | ||||||
| language = None | language = None | ||||||
| 
 | 
 | ||||||
|  | # https://docs.readthedocs.io/en/stable/guides/manage-translations-sphinx.html#create-translatable-files | ||||||
|  | locale_dirs = ['_locale/'] | ||||||
|  | gettext_compact = False | ||||||
|  | gettext_uuid = True | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| # List of patterns, relative to source directory, that match files and | # List of patterns, relative to source directory, that match files and | ||||||
| # directories to ignore when looking for source files. | # directories to ignore when looking for source files. | ||||||
| # This pattern also affects html_static_path and html_extra_path . | # This pattern also affects html_static_path and html_extra_path . | ||||||
|  | |||||||
| @ -0,0 +1,956 @@ | |||||||
|  | 2023-06-07 10:25:38,810 p=81964 u=rob n=ansible | PLAY [Automatic VyOS Lab test] ******************************************************************************************************************************** | ||||||
|  | 2023-06-07 10:25:38,855 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: fail if node_template_iso is empty] ************************************************************************* | ||||||
|  | 2023-06-07 10:25:38,870 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:38,877 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:38,883 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:38,885 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:38,889 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:38,892 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: fail if node_template_version is empty] ********************************************************************* | ||||||
|  | 2023-06-07 10:25:38,912 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:38,919 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:38,919 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:38,921 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:38,925 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:38,928 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: install requirements] *************************************************************************************** | ||||||
|  | 2023-06-07 10:25:38,946 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:38,953 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:38,956 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:38,960 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:44,038 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:25:44,044 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: Login to EVE-NG and get Cookie] ***************************************************************************** | ||||||
|  | 2023-06-07 10:25:44,067 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:44,074 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:44,077 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:44,082 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:44,766 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:25:44,769 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: get template facts] ***************************************************************************************** | ||||||
|  | 2023-06-07 10:25:44,786 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:44,793 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:44,795 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:44,800 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:45,278 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:25:45,282 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: Register path status] *************************************************************************************** | ||||||
|  | 2023-06-07 10:25:45,304 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:45,312 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:45,314 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:45,319 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:45,512 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:25:45,516 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: create path] ************************************************************************************************ | ||||||
|  | 2023-06-07 10:25:45,530 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:45,537 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:45,544 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:45,547 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:45,552 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:45,555 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: Upload iso to eve-ng] *************************************************************************************** | ||||||
|  | 2023-06-07 10:25:45,568 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:45,575 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:45,582 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:45,584 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:45,589 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:45,592 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: create virtioa.qcow2 file] ********************************************************************************** | ||||||
|  | 2023-06-07 10:25:45,613 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:45,620 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:45,620 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:45,622 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:45,626 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:45,629 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: Login to EVE-NG and get Cookie] ***************************************************************************** | ||||||
|  | 2023-06-07 10:25:45,648 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:45,656 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:45,658 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:45,658 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:45,662 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:45,665 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: create lab for node install] ******************************************************************************** | ||||||
|  | 2023-06-07 10:25:45,680 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:45,686 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:45,694 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:45,696 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:45,700 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:45,703 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: open lab] *************************************************************************************************** | ||||||
|  | 2023-06-07 10:25:45,724 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:45,729 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:45,729 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:45,732 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:45,736 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:45,738 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : set_fact] ************************************************************************************************************************** | ||||||
|  | 2023-06-07 10:25:45,751 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:45,758 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:45,764 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:45,767 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:45,771 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:45,774 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: add node to lab] ******************************************************************************************** | ||||||
|  | 2023-06-07 10:25:45,787 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:45,794 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:45,801 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:45,803 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:45,807 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:45,811 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: start node] ************************************************************************************************* | ||||||
|  | 2023-06-07 10:25:45,830 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:45,837 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:45,839 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:45,839 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:45,843 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:45,846 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : debug] ***************************************************************************************************************************** | ||||||
|  | 2023-06-07 10:25:45,860 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:45,867 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:45,875 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:45,877 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:45,881 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:45,884 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: get node infos] ********************************************************************************************* | ||||||
|  | 2023-06-07 10:25:45,897 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:45,904 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:45,911 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:45,913 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:45,918 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:45,920 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : set_fact] ************************************************************************************************************************** | ||||||
|  | 2023-06-07 10:25:45,932 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:45,939 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:45,947 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:45,949 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:45,953 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:45,956 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: copy file] ************************************************************************************************** | ||||||
|  | 2023-06-07 10:25:45,969 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:45,978 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:45,983 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:45,985 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:45,990 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:45,992 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: run expect script] ****************************************************************************************** | ||||||
|  | 2023-06-07 10:25:46,012 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:46,018 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:46,019 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:46,021 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:46,025 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:46,027 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: Login to EVE-NG and get Cookie (due timeout)] *************************************************************** | ||||||
|  | 2023-06-07 10:25:46,040 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:46,048 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:46,055 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:46,057 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:46,061 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:46,064 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: stop node] ************************************************************************************************** | ||||||
|  | 2023-06-07 10:25:46,084 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:46,091 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:46,091 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:46,093 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:46,097 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:46,100 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: Pause to wait node is shutdown] ***************************************************************************** | ||||||
|  | 2023-06-07 10:25:46,112 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:46,115 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: delete iso] ************************************************************************************************* | ||||||
|  | 2023-06-07 10:25:46,136 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:46,143 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:46,143 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:46,145 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:46,150 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:46,153 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: commit virtioa.qcow2] *************************************************************************************** | ||||||
|  | 2023-06-07 10:25:46,173 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:46,180 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:46,181 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:46,182 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:46,186 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:46,190 p=81964 u=rob n=ansible | TASK [eve-ng-create-node : DHCPRelay_through_GRE: delete lab for node install] ******************************************************************************** | ||||||
|  | 2023-06-07 10:25:46,209 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:46,215 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:46,218 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:46,218 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:46,222 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:46,231 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : Get env file content] ***************************************************************************************************************** | ||||||
|  | 2023-06-07 10:25:46,589 p=81964 u=rob n=ansible | ok: [dhcp-server -> localhost] | ||||||
|  | 2023-06-07 10:25:46,589 p=81964 u=rob n=ansible | ok: [vyos-oobm -> localhost] | ||||||
|  | 2023-06-07 10:25:46,589 p=81964 u=rob n=ansible | ok: [dhcp-relay -> localhost] | ||||||
|  | 2023-06-07 10:25:46,589 p=81964 u=rob n=ansible | ok: [transport -> localhost] | ||||||
|  | 2023-06-07 10:25:46,589 p=81964 u=rob n=ansible | ok: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:25:46,592 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Load facts] **************************************************************************************************** | ||||||
|  | 2023-06-07 10:25:46,616 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:25:47,762 p=81964 u=rob n=ansible | network_os is set to vyos | ||||||
|  | 2023-06-07 10:25:47,763 p=81964 u=rob n=ansible | network_os is set to vyos | ||||||
|  | 2023-06-07 10:25:47,764 p=81964 u=rob n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:25:47,768 p=81964 u=rob n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:25:47,768 p=81964 u=rob n=ansible | ok: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:47,769 p=81964 u=rob n=ansible | network_os is set to vyos | ||||||
|  | 2023-06-07 10:25:47,770 p=81964 u=rob n=ansible | ok: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:47,770 p=81964 u=rob n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:25:47,773 p=81964 u=rob n=ansible | network_os is set to vyos | ||||||
|  | 2023-06-07 10:25:47,773 p=81964 u=rob n=ansible | ok: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:47,773 p=81964 u=rob n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:25:47,776 p=81964 u=rob n=ansible | ok: [transport] | ||||||
|  | 2023-06-07 10:25:47,779 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : debug] ******************************************************************************************************************************** | ||||||
|  | 2023-06-07 10:25:47,797 p=81964 u=rob n=ansible | ok: [eveng] => { | ||||||
|  |     "msg": "vyos-1.3.3-amd64" | ||||||
|  | } | ||||||
|  | 2023-06-07 10:25:48,925 p=81964 u=rob n=ansible | ok: [dhcp-relay] => { | ||||||
|  |     "msg": "vyos-1.3.3-amd64" | ||||||
|  | } | ||||||
|  | 2023-06-07 10:25:48,925 p=81964 u=rob n=ansible | ok: [vyos-oobm] => { | ||||||
|  |     "msg": "vyos-1.3.3-amd64" | ||||||
|  | } | ||||||
|  | 2023-06-07 10:25:48,925 p=81964 u=rob n=ansible | ok: [transport] => { | ||||||
|  |     "msg": "vyos-1.3.3-amd64" | ||||||
|  | } | ||||||
|  | 2023-06-07 10:25:48,925 p=81964 u=rob n=ansible | ok: [dhcp-server] => { | ||||||
|  |     "msg": "vyos-1.3.3-amd64" | ||||||
|  | } | ||||||
|  | 2023-06-07 10:25:48,928 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: fail if node_template_version is empty] ************************************************************************ | ||||||
|  | 2023-06-07 10:25:48,941 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:48,948 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:48,954 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:48,957 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:48,961 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:48,964 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Login to EVE-NG and get Cookie] ******************************************************************************** | ||||||
|  | 2023-06-07 10:25:48,982 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:48,990 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:48,993 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:48,997 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:49,562 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:25:49,570 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: get running lab list] ****************************************************************************************** | ||||||
|  | 2023-06-07 10:25:49,596 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:49,604 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:49,607 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:49,612 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:50,020 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:25:50,029 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: kill running lab] ********************************************************************************************** | ||||||
|  | 2023-06-07 10:25:50,053 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:50,055 p=81964 u=rob n=ansible | [WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {% %}. Found: item.labname == "{{ eve_ng_folder_name }}/{{ | ||||||
|  | lab }}" | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:25:50,058 p=81964 u=rob n=ansible | skipping: [eveng] => (item={'podid': '0', 'username': 'admin', 'online': '1', 'uuid': '0fc5edef-8cf2-4400-9a1c-0c4c41a1a881', 'size': 0.1996, 'sat': '0', 'sat_name': 'master', 'labid': 1001, 'labname': '/ecmp wireguard\n', 'cpu': 0, 'mem': 0})  | ||||||
|  | 2023-06-07 10:25:50,060 p=81964 u=rob n=ansible | skipping: [eveng] => (item={'podid': '0', 'username': 'admin', 'online': '1', 'uuid': '9785926c-63ec-42c0-a1ca-a386b9013151', 'size': 0.4115, 'sat': '0', 'sat_name': 'master', 'labid': 1002, 'labname': '/layer2 via IPSec\n', 'cpu': 0, 'mem': 0})  | ||||||
|  | 2023-06-07 10:25:50,061 p=81964 u=rob n=ansible | skipping: [eveng] => (item={'podid': '0', 'username': 'admin', 'online': '1', 'uuid': 'aa98095e-3b64-45aa-b883-e2b7fdfac08c', 'size': 0.7722, 'sat': '0', 'sat_name': 'master', 'labid': 1003, 'labname': '/ospf\n', 'cpu': 0, 'mem': 0})  | ||||||
|  | 2023-06-07 10:25:50,068 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:50,069 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:50,069 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:50,077 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:50,080 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: delete existing lab] ******************************************************************************************* | ||||||
|  | 2023-06-07 10:25:50,099 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:50,106 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:50,108 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:50,114 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:50,495 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:25:50,504 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Ensure labtest is present] ************************************************************************************* | ||||||
|  | 2023-06-07 10:25:50,529 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:50,538 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:50,540 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:50,545 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:50,747 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:25:50,753 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Create DHCPRelay_through_GRE Lab] ****************************************************************************** | ||||||
|  | 2023-06-07 10:25:50,776 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:50,781 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:50,783 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:50,789 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:51,233 p=81964 u=rob n=ansible | changed: [eveng] | ||||||
|  | 2023-06-07 10:25:51,237 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Login to EVE-NG and get Cookie] ******************************************************************************** | ||||||
|  | 2023-06-07 10:25:51,256 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:51,263 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:51,266 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:51,271 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:51,836 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:25:51,840 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: start vyos-oobm] *********************************************************************************************** | ||||||
|  | 2023-06-07 10:25:51,866 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:25:51,866 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:51,869 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:51,874 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:52,835 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:25:52,839 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Wait for vyos-oobm] ******************************************************************************************** | ||||||
|  | 2023-06-07 10:25:52,860 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:25:52,867 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:25:52,869 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:25:52,875 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:25:53,941 p=81964 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:26:23,973 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:26:23,985 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:26:23,986 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:26:23,986 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:26:23,987 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:26:23,987 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:26:23,987 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:26:23,988 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:26:23,988 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] | socket.timeout | ||||||
|  | 2023-06-07 10:26:23,989 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |  | ||||||
|  | 2023-06-07 10:26:23,989 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:26:23,989 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |  | ||||||
|  | 2023-06-07 10:26:23,990 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:26:23,990 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:26:23,990 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |     self._check_banner() | ||||||
|  | 2023-06-07 10:26:23,991 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:26:23,991 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |     raise SSHException( | ||||||
|  | 2023-06-07 10:26:23,991 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:26:23,992 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |  | ||||||
|  | 2023-06-07 10:26:55,021 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:26:55,024 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:26:55,026 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:26:55,027 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:26:55,028 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:26:55,029 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:26:55,029 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:26:55,030 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:26:55,031 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] | socket.timeout | ||||||
|  | 2023-06-07 10:26:55,032 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |  | ||||||
|  | 2023-06-07 10:26:55,032 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:26:55,033 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |  | ||||||
|  | 2023-06-07 10:26:55,034 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:26:55,035 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:26:55,035 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |     self._check_banner() | ||||||
|  | 2023-06-07 10:26:55,036 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:26:55,037 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |     raise SSHException( | ||||||
|  | 2023-06-07 10:26:55,037 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:26:55,038 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] |  | ||||||
|  | 2023-06-07 10:26:56,582 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:26:56,822 p=82377 u=rob n=p=82377 u=rob | paramiko [vyos-oobm] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:26:57,907 p=81964 u=rob n=ansible | ok: [vyos-oobm] | ||||||
|  | 2023-06-07 10:26:57,911 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Login to EVE-NG and get Cookie] ******************************************************************************** | ||||||
|  | 2023-06-07 10:26:57,937 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:26:57,938 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:26:57,939 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:26:57,945 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:26:58,716 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:26:58,725 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: get lab status] ************************************************************************************************ | ||||||
|  | 2023-06-07 10:26:58,757 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:26:58,763 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:26:58,765 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:26:58,771 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:26:59,220 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:26:59,225 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: start all nodes] *********************************************************************************************** | ||||||
|  | 2023-06-07 10:26:59,253 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:26:59,256 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:26:59,256 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:26:59,262 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:27:00,222 p=81964 u=rob n=ansible | ok: [eveng] => (item=2) | ||||||
|  | 2023-06-07 10:27:01,412 p=81964 u=rob n=ansible | ok: [eveng] => (item=3) | ||||||
|  | 2023-06-07 10:27:02,704 p=81964 u=rob n=ansible | ok: [eveng] => (item=4) | ||||||
|  | 2023-06-07 10:27:03,316 p=81964 u=rob n=ansible | ok: [eveng] => (item=1) | ||||||
|  | 2023-06-07 10:27:04,245 p=81964 u=rob n=ansible | ok: [eveng] => (item=5) | ||||||
|  | 2023-06-07 10:27:04,254 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Wait for vyos nodes] ******************************************************************************************* | ||||||
|  | 2023-06-07 10:27:04,274 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:27:04,282 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:27:05,417 p=81964 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:27:05,417 p=81964 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:27:05,417 p=81964 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:27:35,449 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:27:35,450 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:27:35,452 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:27:35,452 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:27:35,452 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:27:35,453 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:27:35,453 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:27:35,453 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:27:35,453 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:27:35,453 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:27:35,453 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] | socket.timeout | ||||||
|  | 2023-06-07 10:27:35,453 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:27:35,453 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |  | ||||||
|  | 2023-06-07 10:27:35,454 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:27:35,454 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:27:35,454 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:27:35,454 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |  | ||||||
|  | 2023-06-07 10:27:35,454 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:27:35,454 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:27:35,454 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:27:35,454 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:27:35,455 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:27:35,455 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |     self._check_banner() | ||||||
|  | 2023-06-07 10:27:35,455 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] | socket.timeout | ||||||
|  | 2023-06-07 10:27:35,455 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:27:35,455 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |  | ||||||
|  | 2023-06-07 10:27:35,455 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |     raise SSHException( | ||||||
|  | 2023-06-07 10:27:35,455 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:27:35,455 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:27:35,456 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |  | ||||||
|  | 2023-06-07 10:27:35,456 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |  | ||||||
|  | 2023-06-07 10:27:35,456 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:27:35,456 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:27:35,456 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |     self._check_banner() | ||||||
|  | 2023-06-07 10:27:35,456 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:27:35,456 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |     raise SSHException( | ||||||
|  | 2023-06-07 10:27:35,456 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:27:35,457 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:27:35,457 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |  | ||||||
|  | 2023-06-07 10:27:35,459 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:27:35,459 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:27:35,460 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:27:35,460 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:27:35,460 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:27:35,460 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:27:35,460 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:27:35,460 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] | socket.timeout | ||||||
|  | 2023-06-07 10:27:35,461 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |  | ||||||
|  | 2023-06-07 10:27:35,461 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:27:35,461 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |  | ||||||
|  | 2023-06-07 10:27:35,461 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:27:35,461 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:27:35,461 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |     self._check_banner() | ||||||
|  | 2023-06-07 10:27:35,462 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:27:35,462 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |     raise SSHException( | ||||||
|  | 2023-06-07 10:27:35,462 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:27:35,462 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |  | ||||||
|  | 2023-06-07 10:27:53,312 p=82251 u=rob n=ansible | persistent connection idle timeout triggered, timeout value is 120 secs. | ||||||
|  | See the timeout setting options in the Network Debug and Troubleshooting Guide. | ||||||
|  | 2023-06-07 10:27:53,416 p=82251 u=rob n=ansible | shutdown complete | ||||||
|  | 2023-06-07 10:28:06,497 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:28:06,498 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:28:06,498 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:28:06,499 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:28:06,499 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:28:06,499 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:28:06,499 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:28:06,499 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:28:06,500 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] | socket.timeout | ||||||
|  | 2023-06-07 10:28:06,500 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |  | ||||||
|  | 2023-06-07 10:28:06,500 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:28:06,500 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |  | ||||||
|  | 2023-06-07 10:28:06,500 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:28:06,500 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:28:06,501 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |     self._check_banner() | ||||||
|  | 2023-06-07 10:28:06,501 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:28:06,501 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |     raise SSHException( | ||||||
|  | 2023-06-07 10:28:06,501 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:28:06,501 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] |  | ||||||
|  | 2023-06-07 10:28:06,504 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:28:06,504 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:28:06,505 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:28:06,505 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:28:06,505 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:28:06,505 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:28:06,505 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:28:06,505 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:28:06,506 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] | socket.timeout | ||||||
|  | 2023-06-07 10:28:06,506 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |  | ||||||
|  | 2023-06-07 10:28:06,506 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:28:06,506 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |  | ||||||
|  | 2023-06-07 10:28:06,506 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:28:06,506 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:28:06,506 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:28:06,507 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |     self._check_banner() | ||||||
|  | 2023-06-07 10:28:06,507 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:28:06,507 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:28:06,507 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |     raise SSHException( | ||||||
|  | 2023-06-07 10:28:06,507 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:28:06,507 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:28:06,507 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:28:06,508 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] |  | ||||||
|  | 2023-06-07 10:28:06,508 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:28:06,508 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:28:06,508 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:28:06,508 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:28:06,508 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] | socket.timeout | ||||||
|  | 2023-06-07 10:28:06,508 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |  | ||||||
|  | 2023-06-07 10:28:06,509 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:28:06,509 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |  | ||||||
|  | 2023-06-07 10:28:06,509 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:28:06,509 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:28:06,509 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |     self._check_banner() | ||||||
|  | 2023-06-07 10:28:06,509 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:28:06,510 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |     raise SSHException( | ||||||
|  | 2023-06-07 10:28:06,510 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:28:06,510 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] |  | ||||||
|  | 2023-06-07 10:28:08,278 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:28:08,284 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:28:08,284 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:28:08,513 p=82498 u=rob n=p=82498 u=rob | paramiko [dhcp-server] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:28:08,518 p=82497 u=rob n=p=82497 u=rob | paramiko [dhcp-relay] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:28:08,519 p=82499 u=rob n=p=82499 u=rob | paramiko [transport] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:28:09,582 p=81964 u=rob n=ansible | ok: [dhcp-server] | ||||||
|  | 2023-06-07 10:28:09,671 p=81964 u=rob n=ansible | ok: [transport] | ||||||
|  | 2023-06-07 10:28:09,672 p=81964 u=rob n=ansible | ok: [dhcp-relay] | ||||||
|  | 2023-06-07 10:28:09,674 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : setup nodes] ************************************************************************************************************************** | ||||||
|  | 2023-06-07 10:28:09,689 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:28:09,696 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:28:10,836 p=82250 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use  | ||||||
|  | ansible.utils.display.Display.verbosity instead. This feature will be removed  | ||||||
|  | in version 2.18. Deprecation warnings can be disabled by setting  | ||||||
|  | deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:28:10,836 p=82245 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use  | ||||||
|  | ansible.utils.display.Display.verbosity instead. This feature will be removed  | ||||||
|  | in version 2.18. Deprecation warnings can be disabled by setting  | ||||||
|  | deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:28:10,837 p=82254 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use  | ||||||
|  | ansible.utils.display.Display.verbosity instead. This feature will be removed  | ||||||
|  | in version 2.18. Deprecation warnings can be disabled by setting  | ||||||
|  | deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:28:11,552 p=82254 u=rob n=p=82254 u=rob | paramiko [transport] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:28:11,557 p=82250 u=rob n=p=82250 u=rob | paramiko [dhcp-relay] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:28:11,562 p=82245 u=rob n=p=82245 u=rob | paramiko [dhcp-server] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:28:11,808 p=82254 u=rob n=p=82254 u=rob | paramiko [transport] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:28:11,808 p=82250 u=rob n=p=82250 u=rob | paramiko [dhcp-relay] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:28:11,808 p=82245 u=rob n=p=82245 u=rob | paramiko [dhcp-server] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:28:16,620 p=81964 u=rob n=ansible | [WARNING]: To ensure idempotency and correct diff the input configuration lines should be similar to how they appear if present in the running configuration | ||||||
|  | on device including the indentation | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:28:16,620 p=81964 u=rob n=ansible | changed: [transport] | ||||||
|  | 2023-06-07 10:28:19,583 p=81964 u=rob n=ansible | changed: [dhcp-relay] | ||||||
|  | 2023-06-07 10:28:20,045 p=81964 u=rob n=ansible | changed: [dhcp-server] | ||||||
|  | 2023-06-07 10:28:20,058 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Login to EVE-NG and get Cookie] ******************************************************************************** | ||||||
|  | 2023-06-07 10:28:20,092 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:28:20,101 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:28:20,104 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:28:20,111 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:28:21,084 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:28:21,094 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: stop nodes id] ************************************************************************************************* | ||||||
|  | 2023-06-07 10:28:21,131 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:28:21,136 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:28:21,140 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:28:21,146 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:28:22,007 p=81964 u=rob n=ansible | ok: [eveng] => (item=5) | ||||||
|  | 2023-06-07 10:28:22,018 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: wait after stop] *********************************************************************************************** | ||||||
|  | 2023-06-07 10:28:22,031 p=81964 u=rob n=ansible | Pausing for 5 seconds | ||||||
|  | 2023-06-07 10:28:22,031 p=81964 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:28:27,052 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:28:27,059 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: start nodes id] ************************************************************************************************ | ||||||
|  | 2023-06-07 10:28:27,087 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:28:27,092 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:28:27,099 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:28:27,102 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:28:28,236 p=81964 u=rob n=ansible | ok: [eveng] => (item=5) | ||||||
|  | 2023-06-07 10:28:28,247 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: wait after start] ********************************************************************************************** | ||||||
|  | 2023-06-07 10:28:28,263 p=81964 u=rob n=ansible | Pausing for 5 seconds | ||||||
|  | 2023-06-07 10:28:28,263 p=81964 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:28:33,288 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:28:33,300 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: wait, b/c the ping often failed without a short break] ********************************************************* | ||||||
|  | 2023-06-07 10:28:33,324 p=81964 u=rob n=ansible | Pausing for 30 seconds | ||||||
|  | 2023-06-07 10:28:33,324 p=81964 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:29:03,340 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:29:03,354 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: do ping test] ************************************************************************************************** | ||||||
|  | 2023-06-07 10:29:03,387 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:29:03,396 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:29:03,412 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:29:08,845 p=81964 u=rob n=ansible | ok: [dhcp-relay] => (item=172.16.0.1) | ||||||
|  | 2023-06-07 10:29:08,848 p=81964 u=rob n=ansible | ok: [dhcp-server] => (item=172.16.0.2) | ||||||
|  | 2023-06-07 10:29:14,111 p=81964 u=rob n=ansible | ok: [dhcp-server] => (item=192.168.0.30) | ||||||
|  | 2023-06-07 10:29:14,118 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: execute test commands] ***************************************************************************************** | ||||||
|  | 2023-06-07 10:29:14,153 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:29:14,156 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:29:14,156 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:29:14,158 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:29:14,168 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:29:14,172 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: register stdout commands] ************************************************************************************** | ||||||
|  | 2023-06-07 10:29:14,197 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:29:14,199 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:29:14,204 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:29:14,214 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:29:15,664 p=81964 u=rob n=ansible | ok: [dhcp-server] => (item={'name': 'show_dhcp_server_leases', 'command': 'show dhcp server leases'}) | ||||||
|  | 2023-06-07 10:29:19,960 p=81964 u=rob n=ansible | ok: [dhcp-server] => (item={'name': 'ping_client', 'command': 'ping 192.168.0.30 count 4'}) | ||||||
|  | 2023-06-07 10:29:19,977 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Set variables] ************************************************************************************************* | ||||||
|  | 2023-06-07 10:29:20,009 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:29:20,012 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:29:20,012 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:29:20,023 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:29:21,122 p=81964 u=rob n=ansible | ok: [dhcp-server] | ||||||
|  | 2023-06-07 10:29:21,127 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Reboot vyos] *************************************************************************************************** | ||||||
|  | 2023-06-07 10:29:21,142 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:29:21,149 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:29:22,583 p=81964 u=rob n=ansible | ok: [dhcp-relay] | ||||||
|  | 2023-06-07 10:29:22,584 p=81964 u=rob n=ansible | ok: [dhcp-server] | ||||||
|  | 2023-06-07 10:29:22,584 p=81964 u=rob n=ansible | ok: [transport] | ||||||
|  | 2023-06-07 10:29:22,588 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: wait while shutdown] ******************************************************************************************* | ||||||
|  | 2023-06-07 10:29:22,602 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:29:22,607 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Wait for vyos nodes] ******************************************************************************************* | ||||||
|  | 2023-06-07 10:29:22,625 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:29:22,634 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:29:23,758 p=81964 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:29:23,758 p=81964 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:29:23,760 p=81964 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:29:24,489 p=82697 u=rob n=p=82697 u=rob | paramiko [dhcp-server] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:29:24,489 p=82698 u=rob n=p=82698 u=rob | paramiko [transport] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:29:24,494 p=82696 u=rob n=p=82696 u=rob | paramiko [dhcp-relay] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:29:24,723 p=82697 u=rob n=p=82697 u=rob | paramiko [dhcp-server] | Auth banner: b'System is going down. Unprivileged users are not permitted to log in anymore. For technical details, see pam_nologin(8).\n\n' | ||||||
|  | 2023-06-07 10:29:24,744 p=82696 u=rob n=p=82696 u=rob | paramiko [dhcp-relay] | Auth banner: b'System is going down. Unprivileged users are not permitted to log in anymore. For technical details, see pam_nologin(8).\n\n' | ||||||
|  | 2023-06-07 10:29:24,754 p=82698 u=rob n=p=82698 u=rob | paramiko [transport] | Auth banner: b'System is going down. Unprivileged users are not permitted to log in anymore. For technical details, see pam_nologin(8).\n\n' | ||||||
|  | 2023-06-07 10:31:23,114 p=82250 u=rob n=ansible | persistent connection idle timeout triggered, timeout value is 120 secs. | ||||||
|  | See the timeout setting options in the Network Debug and Troubleshooting Guide. | ||||||
|  | 2023-06-07 10:31:23,118 p=82245 u=rob n=ansible | persistent connection idle timeout triggered, timeout value is 120 secs. | ||||||
|  | See the timeout setting options in the Network Debug and Troubleshooting Guide. | ||||||
|  | 2023-06-07 10:31:23,119 p=82254 u=rob n=ansible | persistent connection idle timeout triggered, timeout value is 120 secs. | ||||||
|  | See the timeout setting options in the Network Debug and Troubleshooting Guide. | ||||||
|  | 2023-06-07 10:31:23,218 p=82250 u=rob n=ansible | shutdown complete | ||||||
|  | 2023-06-07 10:31:23,221 p=82245 u=rob n=ansible | shutdown complete | ||||||
|  | 2023-06-07 10:31:23,222 p=82254 u=rob n=ansible | shutdown complete | ||||||
|  | 2023-06-07 10:31:26,994 p=82697 u=rob n=p=82697 u=rob | paramiko [dhcp-server] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:31:27,009 p=82696 u=rob n=p=82696 u=rob | paramiko [dhcp-relay] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:31:27,079 p=82698 u=rob n=p=82698 u=rob | paramiko [transport] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:31:27,230 p=82697 u=rob n=p=82697 u=rob | paramiko [dhcp-server] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:31:27,245 p=82696 u=rob n=p=82696 u=rob | paramiko [dhcp-relay] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:31:27,319 p=82698 u=rob n=p=82698 u=rob | paramiko [transport] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:31:28,690 p=81964 u=rob n=ansible | ok: [dhcp-server] | ||||||
|  | 2023-06-07 10:31:28,737 p=81964 u=rob n=ansible | ok: [dhcp-relay] | ||||||
|  | 2023-06-07 10:31:28,786 p=81964 u=rob n=ansible | ok: [transport] | ||||||
|  | 2023-06-07 10:31:28,789 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Login to EVE-NG and get Cookie] ******************************************************************************** | ||||||
|  | 2023-06-07 10:31:28,811 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:31:28,817 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:31:28,819 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:31:28,825 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:31:29,727 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:31:29,731 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: stop nodes id] ************************************************************************************************* | ||||||
|  | 2023-06-07 10:31:29,759 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:31:29,763 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:31:29,768 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:31:29,772 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:31:30,617 p=81964 u=rob n=ansible | ok: [eveng] => (item=5) | ||||||
|  | 2023-06-07 10:31:30,624 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: wait after stop] *********************************************************************************************** | ||||||
|  | 2023-06-07 10:31:30,638 p=81964 u=rob n=ansible | Pausing for 5 seconds | ||||||
|  | 2023-06-07 10:31:30,638 p=81964 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:31:35,645 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:31:35,648 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: start nodes id] ************************************************************************************************ | ||||||
|  | 2023-06-07 10:31:35,676 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:31:35,680 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:31:35,686 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:31:35,692 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:31:36,398 p=81964 u=rob n=ansible | ok: [eveng] => (item=5) | ||||||
|  | 2023-06-07 10:31:36,403 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: wait after start] ********************************************************************************************** | ||||||
|  | 2023-06-07 10:31:36,416 p=81964 u=rob n=ansible | Pausing for 5 seconds | ||||||
|  | 2023-06-07 10:31:36,416 p=81964 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:31:41,427 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:31:41,436 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: wait, b/c the ping often failed without a short break] ********************************************************* | ||||||
|  | 2023-06-07 10:31:41,459 p=81964 u=rob n=ansible | Pausing for 30 seconds | ||||||
|  | 2023-06-07 10:31:41,459 p=81964 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:32:11,468 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:32:11,473 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: do ping test] ************************************************************************************************** | ||||||
|  | 2023-06-07 10:32:11,493 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:32:11,500 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:32:11,515 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:32:12,637 p=81964 u=rob n=ansible | network_os is set to vyos | ||||||
|  | 2023-06-07 10:32:12,639 p=81964 u=rob n=ansible | network_os is set to vyos | ||||||
|  | 2023-06-07 10:32:12,639 p=81964 u=rob n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:32:12,639 p=81964 u=rob n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:32:12,647 p=82905 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use  | ||||||
|  | ansible.utils.display.Display.verbosity instead. This feature will be removed  | ||||||
|  | in version 2.18. Deprecation warnings can be disabled by setting  | ||||||
|  | deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:32:12,647 p=82906 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use  | ||||||
|  | ansible.utils.display.Display.verbosity instead. This feature will be removed  | ||||||
|  | in version 2.18. Deprecation warnings can be disabled by setting  | ||||||
|  | deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:32:13,233 p=82906 u=rob n=p=82906 u=rob | paramiko [dhcp-relay] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:32:13,239 p=82905 u=rob n=p=82905 u=rob | paramiko [dhcp-server] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:32:13,448 p=82906 u=rob n=p=82906 u=rob | paramiko [dhcp-relay] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:32:13,449 p=82905 u=rob n=p=82905 u=rob | paramiko [dhcp-server] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:32:19,182 p=81964 u=rob n=ansible | ok: [dhcp-server] => (item=172.16.0.2) | ||||||
|  | 2023-06-07 10:32:19,218 p=81964 u=rob n=ansible | ok: [dhcp-relay] => (item=172.16.0.1) | ||||||
|  | 2023-06-07 10:32:24,425 p=81964 u=rob n=ansible | ok: [dhcp-server] => (item=192.168.0.30) | ||||||
|  | 2023-06-07 10:32:24,431 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: execute test commands] ***************************************************************************************** | ||||||
|  | 2023-06-07 10:32:24,463 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:32:24,465 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:32:24,465 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:32:24,470 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:32:24,476 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:32:24,479 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: register stdout commands] ************************************************************************************** | ||||||
|  | 2023-06-07 10:32:24,505 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:32:24,506 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:32:24,509 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:32:24,515 p=81964 u=rob n=ansible | skipping: [dhcp-server] => (item={'name': 'show_dhcp_server_leases', 'command': 'show dhcp server leases'})  | ||||||
|  | 2023-06-07 10:32:24,520 p=81964 u=rob n=ansible | skipping: [dhcp-server] => (item={'name': 'ping_client', 'command': 'ping 192.168.0.30 count 4'})  | ||||||
|  | 2023-06-07 10:32:24,521 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:32:24,522 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:32:24,525 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Set variables] ************************************************************************************************* | ||||||
|  | 2023-06-07 10:32:24,551 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:32:24,553 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:32:24,553 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:32:24,557 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:32:24,566 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:32:24,570 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: ake sure tmp dir exist] **************************************************************************************** | ||||||
|  | 2023-06-07 10:32:24,593 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:32:24,602 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:32:24,604 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:32:24,610 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:32:24,839 p=81964 u=rob n=ansible | ok: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:32:24,843 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: register status of tmp/vyos-1.4-rolling-202306070317-amd64.iso] ************************************************ | ||||||
|  | 2023-06-07 10:32:24,862 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:32:24,869 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:32:24,872 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:32:24,877 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:32:24,989 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:32:24,994 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: ownload upgrade_iso] ******************************************************************************************* | ||||||
|  | 2023-06-07 10:32:25,020 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:32:25,027 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:32:25,029 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:32:25,035 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:32:25,546 p=81964 u=rob n=ansible | ok: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:32:25,551 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Copy iso to host] ********************************************************************************************** | ||||||
|  | 2023-06-07 10:32:25,572 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:32:25,578 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:32:26,714 p=81964 u=rob n=ansible | network_os is set to vyos | ||||||
|  | 2023-06-07 10:32:26,714 p=81964 u=rob n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:32:27,365 p=82994 u=rob n=paramiko.transport | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:32:27,381 p=82905 u=rob n=p=82905 u=rob | paramiko [dhcp-server] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:32:27,385 p=82906 u=rob n=p=82906 u=rob | paramiko [dhcp-relay] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:32:27,586 p=82994 u=rob n=paramiko.transport | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:32:27,597 p=82906 u=rob n=p=82906 u=rob | paramiko [dhcp-relay] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:32:27,599 p=82905 u=rob n=p=82905 u=rob | paramiko [dhcp-server] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:32:28,420 p=82905 u=rob n=p=82905 u=rob | paramiko [dhcp-server] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:32:28,546 p=82906 u=rob n=p=82906 u=rob | paramiko [dhcp-relay] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:32:28,548 p=82994 u=rob n=paramiko.transport | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:32:28,633 p=82905 u=rob n=p=82905 u=rob | paramiko [dhcp-server] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:32:28,749 p=82906 u=rob n=p=82906 u=rob | paramiko [dhcp-relay] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:32:28,753 p=82994 u=rob n=paramiko.transport | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:32:56,110 p=81964 u=rob n=ansible | changed: [dhcp-server] | ||||||
|  | 2023-06-07 10:32:56,855 p=81964 u=rob n=ansible | changed: [dhcp-relay] | ||||||
|  | 2023-06-07 10:32:56,855 p=81964 u=rob n=ansible | changed: [transport] | ||||||
|  | 2023-06-07 10:32:56,859 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: upgrade vyos] ************************************************************************************************** | ||||||
|  | 2023-06-07 10:32:56,873 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:32:56,880 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:32:58,006 p=82994 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use  | ||||||
|  | ansible.utils.display.Display.verbosity instead. This feature will be removed  | ||||||
|  | in version 2.18. Deprecation warnings can be disabled by setting  | ||||||
|  | deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:32:58,665 p=82994 u=rob n=p=82994 u=rob | paramiko [transport] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:32:58,906 p=82994 u=rob n=p=82994 u=rob | paramiko [transport] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:33:09,126 p=81964 u=rob n=ansible | ok: [dhcp-server] | ||||||
|  | 2023-06-07 10:33:09,344 p=81964 u=rob n=ansible | ok: [dhcp-relay] | ||||||
|  | 2023-06-07 10:33:11,698 p=81964 u=rob n=ansible | ok: [transport] | ||||||
|  | 2023-06-07 10:33:11,703 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Reboot vyos] *************************************************************************************************** | ||||||
|  | 2023-06-07 10:33:11,724 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:33:11,730 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:33:13,403 p=81964 u=rob n=ansible | ok: [dhcp-server] | ||||||
|  | 2023-06-07 10:33:13,403 p=81964 u=rob n=ansible | ok: [dhcp-relay] | ||||||
|  | 2023-06-07 10:33:13,403 p=81964 u=rob n=ansible | ok: [transport] | ||||||
|  | 2023-06-07 10:33:13,407 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: wait while shutdown] ******************************************************************************************* | ||||||
|  | 2023-06-07 10:33:13,420 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:33:13,424 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Wait for vyos nodes] ******************************************************************************************* | ||||||
|  | 2023-06-07 10:33:13,441 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:33:13,448 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:33:14,564 p=81964 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:33:14,565 p=81964 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:33:14,567 p=81964 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:33:15,383 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:33:15,386 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:33:15,407 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:33:15,654 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] | Auth banner: b'System is going down. Unprivileged users are not permitted to log in anymore. For technical details, see pam_nologin(8).\n\n' | ||||||
|  | 2023-06-07 10:33:15,656 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] | Auth banner: b'System is going down. Unprivileged users are not permitted to log in anymore. For technical details, see pam_nologin(8).\n\n' | ||||||
|  | 2023-06-07 10:33:15,658 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] | Auth banner: b'System is going down. Unprivileged users are not permitted to log in anymore. For technical details, see pam_nologin(8).\n\n' | ||||||
|  | 2023-06-07 10:35:13,936 p=82906 u=rob n=ansible | persistent connection idle timeout triggered, timeout value is 120 secs. | ||||||
|  | See the timeout setting options in the Network Debug and Troubleshooting Guide. | ||||||
|  | 2023-06-07 10:35:13,939 p=82905 u=rob n=ansible | persistent connection idle timeout triggered, timeout value is 120 secs. | ||||||
|  | See the timeout setting options in the Network Debug and Troubleshooting Guide. | ||||||
|  | 2023-06-07 10:35:13,940 p=82994 u=rob n=ansible | persistent connection idle timeout triggered, timeout value is 120 secs. | ||||||
|  | See the timeout setting options in the Network Debug and Troubleshooting Guide. | ||||||
|  | 2023-06-07 10:35:14,040 p=82906 u=rob n=ansible | shutdown complete | ||||||
|  | 2023-06-07 10:35:14,044 p=82905 u=rob n=ansible | shutdown complete | ||||||
|  | 2023-06-07 10:35:14,044 p=82994 u=rob n=ansible | shutdown complete | ||||||
|  | 2023-06-07 10:35:46,683 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:35:46,686 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:35:46,687 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:35:46,687 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:35:46,687 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:35:46,688 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:35:46,688 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:35:46,688 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:35:46,688 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] | socket.timeout | ||||||
|  | 2023-06-07 10:35:46,688 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] |  | ||||||
|  | 2023-06-07 10:35:46,689 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:35:46,689 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] |  | ||||||
|  | 2023-06-07 10:35:46,689 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:35:46,690 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:35:46,690 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] |     self._check_banner() | ||||||
|  | 2023-06-07 10:35:46,690 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:35:46,690 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] |     raise SSHException( | ||||||
|  | 2023-06-07 10:35:46,690 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:35:46,691 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] |  | ||||||
|  | 2023-06-07 10:35:46,692 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:35:46,696 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:35:46,696 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:35:46,696 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:35:46,697 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:35:46,697 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:35:46,697 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:35:46,697 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:35:46,697 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] | socket.timeout | ||||||
|  | 2023-06-07 10:35:46,698 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] |  | ||||||
|  | 2023-06-07 10:35:46,698 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:35:46,698 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] |  | ||||||
|  | 2023-06-07 10:35:46,698 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:35:46,698 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:35:46,699 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] |     self._check_banner() | ||||||
|  | 2023-06-07 10:35:46,699 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:35:46,699 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] |     raise SSHException( | ||||||
|  | 2023-06-07 10:35:46,699 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:35:46,700 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] |  | ||||||
|  | 2023-06-07 10:35:46,705 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:35:46,708 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:35:46,708 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:35:46,708 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:35:46,708 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:35:46,708 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:35:46,709 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:35:46,709 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:35:46,709 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] | socket.timeout | ||||||
|  | 2023-06-07 10:35:46,709 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] |  | ||||||
|  | 2023-06-07 10:35:46,709 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:35:46,709 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] |  | ||||||
|  | 2023-06-07 10:35:46,710 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:35:46,710 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:35:46,710 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] |     self._check_banner() | ||||||
|  | 2023-06-07 10:35:46,710 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:35:46,710 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] |     raise SSHException( | ||||||
|  | 2023-06-07 10:35:46,711 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:35:46,711 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] |  | ||||||
|  | 2023-06-07 10:35:48,426 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] | Connected (version 2.0, client OpenSSH_9.2p1) | ||||||
|  | 2023-06-07 10:35:48,441 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] | Connected (version 2.0, client OpenSSH_9.2p1) | ||||||
|  | 2023-06-07 10:35:48,458 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] | Connected (version 2.0, client OpenSSH_9.2p1) | ||||||
|  | 2023-06-07 10:35:48,670 p=83033 u=rob n=p=83033 u=rob | paramiko [dhcp-relay] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:35:48,676 p=83034 u=rob n=p=83034 u=rob | paramiko [dhcp-server] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:35:48,676 p=83035 u=rob n=p=83035 u=rob | paramiko [transport] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:35:50,274 p=81964 u=rob n=ansible | ok: [dhcp-relay] | ||||||
|  | 2023-06-07 10:35:50,285 p=81964 u=rob n=ansible | ok: [dhcp-server] | ||||||
|  | 2023-06-07 10:35:50,329 p=81964 u=rob n=ansible | ok: [transport] | ||||||
|  | 2023-06-07 10:35:50,332 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: clear tmp dir] ************************************************************************************************* | ||||||
|  | 2023-06-07 10:35:50,343 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:35:50,346 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Login to EVE-NG and get Cookie] ******************************************************************************** | ||||||
|  | 2023-06-07 10:35:50,365 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:35:50,372 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:35:50,375 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:35:50,381 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:35:51,297 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:35:51,301 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: stop nodes id] ************************************************************************************************* | ||||||
|  | 2023-06-07 10:35:51,328 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:35:51,331 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:35:51,338 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:35:51,340 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:35:52,181 p=81964 u=rob n=ansible | ok: [eveng] => (item=5) | ||||||
|  | 2023-06-07 10:35:52,188 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: wait after stop] *********************************************************************************************** | ||||||
|  | 2023-06-07 10:35:52,202 p=81964 u=rob n=ansible | Pausing for 5 seconds | ||||||
|  | 2023-06-07 10:35:52,202 p=81964 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:35:57,214 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:35:57,223 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: start nodes id] ************************************************************************************************ | ||||||
|  | 2023-06-07 10:35:57,259 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:35:57,262 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:35:57,268 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:35:57,273 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:35:57,949 p=81964 u=rob n=ansible | ok: [eveng] => (item=5) | ||||||
|  | 2023-06-07 10:35:57,960 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: wait after start] ********************************************************************************************** | ||||||
|  | 2023-06-07 10:35:57,979 p=81964 u=rob n=ansible | Pausing for 5 seconds | ||||||
|  | 2023-06-07 10:35:57,980 p=81964 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:36:02,989 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:36:02,997 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: wait, b/c the ping often failed without a short break] ********************************************************* | ||||||
|  | 2023-06-07 10:36:03,021 p=81964 u=rob n=ansible | Pausing for 30 seconds | ||||||
|  | 2023-06-07 10:36:03,021 p=81964 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:36:33,032 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:36:33,042 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: do ping test] ************************************************************************************************** | ||||||
|  | 2023-06-07 10:36:33,078 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:36:33,079 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:36:33,093 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:36:34,212 p=81964 u=rob n=ansible | network_os is set to vyos | ||||||
|  | 2023-06-07 10:36:34,212 p=81964 u=rob n=ansible | network_os is set to vyos | ||||||
|  | 2023-06-07 10:36:34,212 p=81964 u=rob n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:36:34,212 p=81964 u=rob n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:36:34,226 p=83204 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use  | ||||||
|  | ansible.utils.display.Display.verbosity instead. This feature will be removed  | ||||||
|  | in version 2.18. Deprecation warnings can be disabled by setting  | ||||||
|  | deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:36:34,227 p=83203 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use  | ||||||
|  | ansible.utils.display.Display.verbosity instead. This feature will be removed  | ||||||
|  | in version 2.18. Deprecation warnings can be disabled by setting  | ||||||
|  | deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:36:34,794 p=83203 u=rob n=p=83203 u=rob | paramiko [dhcp-server] | Connected (version 2.0, client OpenSSH_9.2p1) | ||||||
|  | 2023-06-07 10:36:34,801 p=83204 u=rob n=p=83204 u=rob | paramiko [dhcp-relay] | Connected (version 2.0, client OpenSSH_9.2p1) | ||||||
|  | 2023-06-07 10:36:35,032 p=83204 u=rob n=p=83204 u=rob | paramiko [dhcp-relay] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:36:35,033 p=83203 u=rob n=p=83203 u=rob | paramiko [dhcp-server] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:36:41,043 p=81964 u=rob n=ansible | ok: [dhcp-relay] => (item=172.16.0.1) | ||||||
|  | 2023-06-07 10:36:41,112 p=81964 u=rob n=ansible | ok: [dhcp-server] => (item=172.16.0.2) | ||||||
|  | 2023-06-07 10:36:46,459 p=81964 u=rob n=ansible | ok: [dhcp-server] => (item=192.168.0.30) | ||||||
|  | 2023-06-07 10:36:46,466 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: execute test commands] ***************************************************************************************** | ||||||
|  | 2023-06-07 10:36:46,496 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:36:46,499 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:36:46,499 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:36:46,501 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:36:46,510 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:36:46,514 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: register stdout commands] ************************************************************************************** | ||||||
|  | 2023-06-07 10:36:46,539 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:36:46,541 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:36:46,544 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:36:46,551 p=81964 u=rob n=ansible | skipping: [dhcp-server] => (item={'name': 'show_dhcp_server_leases', 'command': 'show dhcp server leases'})  | ||||||
|  | 2023-06-07 10:36:46,557 p=81964 u=rob n=ansible | skipping: [dhcp-server] => (item={'name': 'ping_client', 'command': 'ping 192.168.0.30 count 4'})  | ||||||
|  | 2023-06-07 10:36:46,558 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:36:46,558 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:36:46,562 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Set variables] ************************************************************************************************* | ||||||
|  | 2023-06-07 10:36:46,588 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:36:46,590 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:36:46,590 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:36:46,594 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:36:46,603 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:36:46,607 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: make sure output dir exist] ************************************************************************************ | ||||||
|  | 2023-06-07 10:36:46,630 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:36:46,639 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:36:46,641 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:36:46,646 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:36:46,866 p=81964 u=rob n=ansible | ok: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:36:46,870 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: make sure output include dir exist] **************************************************************************** | ||||||
|  | 2023-06-07 10:36:46,894 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:36:46,903 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:36:46,905 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:36:46,910 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:36:47,131 p=81964 u=rob n=ansible | ok: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:36:47,134 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Get timestamp from the system] ********************************************************************************* | ||||||
|  | 2023-06-07 10:36:47,154 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:36:47,161 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:36:47,164 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:36:47,169 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:36:47,361 p=81964 u=rob n=ansible | changed: [eveng] | ||||||
|  | 2023-06-07 10:36:47,366 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: Set variables] ************************************************************************************************* | ||||||
|  | 2023-06-07 10:36:47,386 p=81964 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:36:47,394 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:36:47,397 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:36:47,397 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:36:47,402 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:36:47,407 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: generate lab rst file] ***************************************************************************************** | ||||||
|  | 2023-06-07 10:36:47,432 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:36:47,438 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:36:47,440 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:36:47,446 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:36:47,912 p=81964 u=rob n=ansible | changed: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:36:47,917 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: find all *.conf files in Lab] ********************************************************************************** | ||||||
|  | 2023-06-07 10:36:47,941 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:36:47,950 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:36:47,953 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:36:47,958 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:36:48,255 p=81964 u=rob n=ansible | ok: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:36:48,262 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: copy all *.conf files] ***************************************************************************************** | ||||||
|  | 2023-06-07 10:36:48,292 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:36:48,301 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:36:48,302 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:36:48,308 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:36:48,794 p=81964 u=rob n=ansible | ok: [eveng -> localhost] => (item={'path': 'labs/DHCPRelay_through_GRE/dhcp-server.conf', 'mode': '0644', 'isdir': False, 'ischr': False, 'isblk': False, 'isreg': True, 'isfifo': False, 'islnk': False, 'issock': False, 'uid': 501, 'gid': 20, 'size': 883, 'inode': 362560, 'dev': 16777229, 'nlink': 1, 'atime': 1675370047.048312, 'mtime': 1648155110.0, 'ctime': 1675368464.810746, 'gr_name': 'staff', 'pw_name': 'rob', 'wusr': True, 'rusr': True, 'xusr': False, 'wgrp': False, 'rgrp': True, 'xgrp': False, 'woth': False, 'roth': True, 'xoth': False, 'isuid': False, 'isgid': False}) | ||||||
|  | 2023-06-07 10:36:49,262 p=81964 u=rob n=ansible | ok: [eveng -> localhost] => (item={'path': 'labs/DHCPRelay_through_GRE/dhcp-relay.conf', 'mode': '0644', 'isdir': False, 'ischr': False, 'isblk': False, 'isreg': True, 'isfifo': False, 'islnk': False, 'issock': False, 'uid': 501, 'gid': 20, 'size': 562, 'inode': 362561, 'dev': 16777229, 'nlink': 1, 'atime': 1675370047.013727, 'mtime': 1648155110.0, 'ctime': 1675368464.810769, 'gr_name': 'staff', 'pw_name': 'rob', 'wusr': True, 'rusr': True, 'xusr': False, 'wgrp': False, 'rgrp': True, 'xgrp': False, 'woth': False, 'roth': True, 'xoth': False, 'isuid': False, 'isgid': False}) | ||||||
|  | 2023-06-07 10:36:49,730 p=81964 u=rob n=ansible | ok: [eveng -> localhost] => (item={'path': 'labs/DHCPRelay_through_GRE/transport.conf', 'mode': '0644', 'isdir': False, 'ischr': False, 'isblk': False, 'isreg': True, 'isfifo': False, 'islnk': False, 'issock': False, 'uid': 501, 'gid': 20, 'size': 107, 'inode': 362564, 'dev': 16777229, 'nlink': 1, 'atime': 1675370047.9696386, 'mtime': 1648155110.0, 'ctime': 1675368464.8108501, 'gr_name': 'staff', 'pw_name': 'rob', 'wusr': True, 'rusr': True, 'xusr': False, 'wgrp': False, 'rgrp': True, 'xgrp': False, 'woth': False, 'roth': True, 'xoth': False, 'isuid': False, 'isgid': False}) | ||||||
|  | 2023-06-07 10:36:49,736 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: find all *.config files in Lab] ******************************************************************************** | ||||||
|  | 2023-06-07 10:36:49,759 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:36:49,768 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:36:49,770 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:36:49,777 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:36:49,989 p=81964 u=rob n=ansible | ok: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:36:49,993 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: copy all *.config files] *************************************************************************************** | ||||||
|  | 2023-06-07 10:36:50,010 p=81964 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:36:50,019 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:36:50,027 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:36:50,029 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:36:50,034 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:36:50,039 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: find all *.png files in Lab] *********************************************************************************** | ||||||
|  | 2023-06-07 10:36:50,061 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:36:50,070 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:36:50,073 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:36:50,078 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:36:50,291 p=81964 u=rob n=ansible | ok: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:36:50,298 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: copy all *.png files] ****************************************************************************************** | ||||||
|  | 2023-06-07 10:36:50,322 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:36:50,332 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:36:50,334 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:36:50,340 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
|  | 2023-06-07 10:36:50,775 p=81964 u=rob n=ansible | ok: [eveng -> localhost] => (item={'path': 'labs/DHCPRelay_through_GRE/topology.png', 'mode': '0644', 'isdir': False, 'ischr': False, 'isblk': False, 'isreg': True, 'isfifo': False, 'islnk': False, 'issock': False, 'uid': 501, 'gid': 20, 'size': 57080, 'inode': 362559, 'dev': 16777229, 'nlink': 1, 'atime': 1676403697.1323667, 'mtime': 1648155110.0, 'ctime': 1675368464.8107133, 'gr_name': 'staff', 'pw_name': 'rob', 'wusr': True, 'rusr': True, 'xusr': False, 'wgrp': False, 'rgrp': True, 'xgrp': False, 'woth': False, 'roth': True, 'xoth': False, 'isuid': False, 'isgid': False}) | ||||||
|  | 2023-06-07 10:36:50,781 p=81964 u=rob n=ansible | TASK [eve-ng-lab-test : DHCPRelay_through_GRE: copy ansible log files] **************************************************************************************** | ||||||
|  | 2023-06-07 10:36:50,803 p=81964 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:36:50,812 p=81964 u=rob n=ansible | skipping: [dhcp-relay] | ||||||
|  | 2023-06-07 10:36:50,814 p=81964 u=rob n=ansible | skipping: [dhcp-server] | ||||||
|  | 2023-06-07 10:36:50,820 p=81964 u=rob n=ansible | skipping: [transport] | ||||||
| @ -0,0 +1,99 @@ | |||||||
|  | ############################ | ||||||
|  | DHCP Relay trough GRE-Bridge | ||||||
|  | ############################ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | | Testdate: 2023-06-07 | ||||||
|  | | Version: 1.3.3 | ||||||
|  | | Upgrade Version: 1.4-rolling-202306070317 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This simple structure shows how to configure a DHCP Relay over a GRE Bridge | ||||||
|  | interface. | ||||||
|  | 
 | ||||||
|  | ******** | ||||||
|  | Topology | ||||||
|  | ******** | ||||||
|  | 
 | ||||||
|  | The topology has 3 VyOS routers and one client. Between the DHCP Server and | ||||||
|  | the DHCP Relay is a GRE tunnel. The `transport` VyOS represent a large | ||||||
|  | Network. | ||||||
|  | 
 | ||||||
|  | .. image:: _include/topology.png | ||||||
|  |   :alt: Ansible Example topology image | ||||||
|  | 
 | ||||||
|  | ************* | ||||||
|  | Configuration | ||||||
|  | ************* | ||||||
|  | 
 | ||||||
|  | First, we configure the transport network and the Tunnel interface. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Transport: | ||||||
|  | 
 | ||||||
|  | .. literalinclude:: _include/transport.conf | ||||||
|  |    :language: none | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | DHCP-Server | ||||||
|  | 
 | ||||||
|  | .. literalinclude:: _include/dhcp-server.conf | ||||||
|  |    :language: none | ||||||
|  |    :lines: 1-8 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | DHCP-Relay | ||||||
|  | 
 | ||||||
|  | .. literalinclude:: _include/dhcp-relay.conf | ||||||
|  |    :language: none | ||||||
|  |    :lines: 1-8 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | After this, we need the DHCP-Server and Relay configuration. | ||||||
|  | To get a testable result, we just have one IP in the DHCP range. | ||||||
|  | Expand it as you need it. | ||||||
|  | 
 | ||||||
|  | DHCP-Server | ||||||
|  | 
 | ||||||
|  | .. literalinclude:: _include/dhcp-server.conf | ||||||
|  |    :language: none | ||||||
|  |    :lines: 9-13 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | DHCP-Relay | ||||||
|  | 
 | ||||||
|  | .. literalinclude:: _include/dhcp-relay.conf | ||||||
|  |    :language: none | ||||||
|  |    :lines: 9-10 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | *************** | ||||||
|  | Test the result | ||||||
|  | *************** | ||||||
|  | 
 | ||||||
|  | Ping the Client from the DHCP Server. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    vyos@dhcp-server:~$ ping 192.168.0.30 count 4 | ||||||
|  |    PING 192.168.0.30 (192.168.0.30) 56(84) bytes of data. | ||||||
|  |    64 bytes from 192.168.0.30: icmp_seq=1 ttl=63 time=0.843 ms | ||||||
|  |    64 bytes from 192.168.0.30: icmp_seq=2 ttl=63 time=1.06 ms | ||||||
|  |    64 bytes from 192.168.0.30: icmp_seq=3 ttl=63 time=0.988 ms | ||||||
|  |    64 bytes from 192.168.0.30: icmp_seq=4 ttl=63 time=3.28 ms | ||||||
|  |     | ||||||
|  |    --- 192.168.0.30 ping statistics --- | ||||||
|  |    4 packets transmitted, 4 received, 0% packet loss, time 24ms | ||||||
|  |    rtt min/avg/max/mdev = 0.843/1.541/3.277/1.006 ms | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | And show all DHCP Leases | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    vyos@dhcp-server:~$ show dhcp server leases | ||||||
|  |    IP address    Hardware address    State    Lease start          Lease expiration     Remaining    Pool        Hostname | ||||||
|  |    ------------  ------------------  -------  -------------------  -------------------  -----------  ----------  ---------- | ||||||
|  |    192.168.0.30  00:50:79:66:68:05   active   2023/06/07 08:28:31  2023/06/08 08:28:31  23:59:16     DHCPTun100  VPCS | ||||||
| @ -0,0 +1,11 @@ | |||||||
|  | set interfaces ethernet eth1 address '10.0.10.10/24' | ||||||
|  | set interfaces ethernet eth2 address '192.168.0.254/24' | ||||||
|  | set interfaces tunnel tun100 address '172.16.0.2/30' | ||||||
|  | set interfaces tunnel tun100 encapsulation 'gretap' | ||||||
|  | set interfaces tunnel tun100 remote '10.0.20.10' | ||||||
|  | set interfaces tunnel tun100 source-address '10.0.10.10' | ||||||
|  | set protocols static route 0.0.0.0/0 next-hop 172.16.0.1 | ||||||
|  | set protocols static route 10.0.20.0/24 next-hop 10.0.10.254 | ||||||
|  | set service dhcp-relay interface 'eth2' | ||||||
|  | set service dhcp-relay interface 'tun100' | ||||||
|  | set service dhcp-relay server '172.16.0.1' | ||||||
| @ -0,0 +1,13 @@ | |||||||
|  | set interfaces ethernet eth1 address '10.0.20.10/24' | ||||||
|  | set interfaces tunnel tun100 address '172.16.0.1/30' | ||||||
|  | set interfaces tunnel tun100 encapsulation 'gretap' | ||||||
|  | set interfaces tunnel tun100 remote '10.0.10.10' | ||||||
|  | set interfaces tunnel tun100 source-address '10.0.20.10' | ||||||
|  | set protocols static route 0.0.0.0/0 next-hop 172.16.0.2 | ||||||
|  | set protocols static route 10.0.10.0/24 next-hop 10.0.20.254 | ||||||
|  | set protocols static route 192.168.0.0/24 next-hop 127.16.0.2 | ||||||
|  | set service dhcp-server listen-address '172.16.0.1' | ||||||
|  | set service dhcp-server shared-network-name DHCPTun100 authoritative | ||||||
|  | set service dhcp-server shared-network-name DHCPTun100 subnet 192.168.0.0/24 default-router '192.168.0.254' | ||||||
|  | set service dhcp-server shared-network-name DHCPTun100 subnet 192.168.0.0/24 range 0 start '192.168.0.30' | ||||||
|  | set service dhcp-server shared-network-name DHCPTun100 subnet 192.168.0.0/24 range 0 stop '192.168.0.30' | ||||||
| After Width: | Height: | Size: 56 KiB | 
| @ -0,0 +1,2 @@ | |||||||
|  | set interfaces ethernet eth1 address '10.0.10.254/24' | ||||||
|  | set interfaces ethernet eth2 address '10.0.20.254/24' | ||||||
							
								
								
									
										787
									
								
								docs/configexamples/autotest/Wireguard/Wireguard.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,787 @@ | |||||||
|  | 2023-06-07 10:09:54,785 p=80164 u=rob n=ansible | PLAY [Automatic VyOS Lab test] ******************************************************************************************************************************** | ||||||
|  | 2023-06-07 10:09:54,829 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: fail if node_template_iso is empty] ************************************************************************************* | ||||||
|  | 2023-06-07 10:09:54,843 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:54,850 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:54,852 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:54,857 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:54,860 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: fail if node_template_version is empty] ********************************************************************************* | ||||||
|  | 2023-06-07 10:09:54,880 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:54,880 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:54,882 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:54,887 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:54,890 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: install requirements] *************************************************************************************************** | ||||||
|  | 2023-06-07 10:09:54,908 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:54,910 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:54,915 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:56,756 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:09:56,763 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: Login to EVE-NG and get Cookie] ***************************************************************************************** | ||||||
|  | 2023-06-07 10:09:56,791 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:56,795 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:56,800 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:57,451 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:09:57,456 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: get template facts] ***************************************************************************************************** | ||||||
|  | 2023-06-07 10:09:57,474 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:57,476 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:57,481 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:57,880 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:09:57,884 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: Register path status] *************************************************************************************************** | ||||||
|  | 2023-06-07 10:09:57,903 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:57,906 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:57,912 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,109 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:09:58,112 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: create path] ************************************************************************************************************ | ||||||
|  | 2023-06-07 10:09:58,128 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,136 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,138 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,144 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,147 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: Upload iso to eve-ng] *************************************************************************************************** | ||||||
|  | 2023-06-07 10:09:58,160 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,167 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,169 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,174 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,178 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: create virtioa.qcow2 file] ********************************************************************************************** | ||||||
|  | 2023-06-07 10:09:58,193 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,200 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,202 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,207 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,210 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: Login to EVE-NG and get Cookie] ***************************************************************************************** | ||||||
|  | 2023-06-07 10:09:58,223 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,231 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,233 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,238 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,241 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: create lab for node install] ******************************************************************************************** | ||||||
|  | 2023-06-07 10:09:58,255 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,261 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,264 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,268 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,271 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: open lab] *************************************************************************************************************** | ||||||
|  | 2023-06-07 10:09:58,291 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,291 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,293 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,298 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,300 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : set_fact] ************************************************************************************************************************** | ||||||
|  | 2023-06-07 10:09:58,313 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,320 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,322 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,327 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,329 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: add node to lab] ******************************************************************************************************** | ||||||
|  | 2023-06-07 10:09:58,349 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,349 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,351 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,355 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,358 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: start node] ************************************************************************************************************* | ||||||
|  | 2023-06-07 10:09:58,375 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,381 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,382 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,386 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,389 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : debug] ***************************************************************************************************************************** | ||||||
|  | 2023-06-07 10:09:58,406 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,411 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,413 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,418 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,421 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: get node infos] ********************************************************************************************************* | ||||||
|  | 2023-06-07 10:09:58,440 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,440 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,442 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,446 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,448 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : set_fact] ************************************************************************************************************************** | ||||||
|  | 2023-06-07 10:09:58,465 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,469 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,471 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,475 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,479 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: copy file] ************************************************************************************************************** | ||||||
|  | 2023-06-07 10:09:58,495 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,500 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,503 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,507 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,511 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: run expect script] ****************************************************************************************************** | ||||||
|  | 2023-06-07 10:09:58,526 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,533 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,535 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,540 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,543 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: Login to EVE-NG and get Cookie (due timeout)] *************************************************************************** | ||||||
|  | 2023-06-07 10:09:58,557 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,563 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,566 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,571 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,574 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: stop node] ************************************************************************************************************** | ||||||
|  | 2023-06-07 10:09:58,596 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,596 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,596 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,603 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,606 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: Pause to wait node is shutdown] ***************************************************************************************** | ||||||
|  | 2023-06-07 10:09:58,617 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,620 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: delete iso] ************************************************************************************************************* | ||||||
|  | 2023-06-07 10:09:58,634 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,641 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,643 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,648 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,651 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: commit virtioa.qcow2] *************************************************************************************************** | ||||||
|  | 2023-06-07 10:09:58,665 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,674 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,674 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,679 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,682 p=80164 u=rob n=ansible | TASK [eve-ng-create-node : Wireguard: delete lab for node install] ******************************************************************************************** | ||||||
|  | 2023-06-07 10:09:58,704 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:09:58,705 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:09:58,705 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:09:58,709 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:09:58,717 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Get env file content] ***************************************************************************************************************** | ||||||
|  | 2023-06-07 10:09:59,078 p=80164 u=rob n=ansible | ok: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:09:59,079 p=80164 u=rob n=ansible | ok: [vyos-oobm -> localhost] | ||||||
|  | 2023-06-07 10:09:59,079 p=80164 u=rob n=ansible | ok: [branch -> localhost] | ||||||
|  | 2023-06-07 10:09:59,079 p=80164 u=rob n=ansible | ok: [central -> localhost] | ||||||
|  | 2023-06-07 10:09:59,082 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Load facts] **************************************************************************************************************** | ||||||
|  | 2023-06-07 10:09:59,102 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:10:00,256 p=80164 u=rob n=ansible | network_os is set to vyos | ||||||
|  | 2023-06-07 10:10:00,257 p=80164 u=rob n=ansible | network_os is set to vyos | ||||||
|  | 2023-06-07 10:10:00,258 p=80164 u=rob n=ansible | network_os is set to vyos | ||||||
|  | 2023-06-07 10:10:00,258 p=80164 u=rob n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:10:00,258 p=80164 u=rob n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:10:00,258 p=80164 u=rob n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:10:00,265 p=80164 u=rob n=ansible | ok: [branch] | ||||||
|  | 2023-06-07 10:10:00,266 p=80164 u=rob n=ansible | ok: [vyos-oobm] | ||||||
|  | 2023-06-07 10:10:00,266 p=80164 u=rob n=ansible | ok: [central] | ||||||
|  | 2023-06-07 10:10:00,270 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : debug] ******************************************************************************************************************************** | ||||||
|  | 2023-06-07 10:10:00,288 p=80164 u=rob n=ansible | ok: [eveng] => { | ||||||
|  |     "msg": "vyos-1.3.3-amd64" | ||||||
|  | } | ||||||
|  | 2023-06-07 10:10:01,410 p=80164 u=rob n=ansible | ok: [branch] => { | ||||||
|  |     "msg": "vyos-1.3.3-amd64" | ||||||
|  | } | ||||||
|  | 2023-06-07 10:10:01,411 p=80164 u=rob n=ansible | ok: [central] => { | ||||||
|  |     "msg": "vyos-1.3.3-amd64" | ||||||
|  | } | ||||||
|  | 2023-06-07 10:10:01,411 p=80164 u=rob n=ansible | ok: [vyos-oobm] => { | ||||||
|  |     "msg": "vyos-1.3.3-amd64" | ||||||
|  | } | ||||||
|  | 2023-06-07 10:10:01,416 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: fail if node_template_version is empty] ************************************************************************************ | ||||||
|  | 2023-06-07 10:10:01,435 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:10:01,444 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:10:01,446 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:10:01,451 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:10:01,455 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Login to EVE-NG and get Cookie] ******************************************************************************************** | ||||||
|  | 2023-06-07 10:10:01,475 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:10:01,478 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:10:01,483 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:10:02,420 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:10:02,426 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: get running lab list] ****************************************************************************************************** | ||||||
|  | 2023-06-07 10:10:02,453 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:10:02,453 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:10:02,461 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:10:02,863 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:10:02,869 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: kill running lab] ********************************************************************************************************** | ||||||
|  | 2023-06-07 10:10:02,888 p=80164 u=rob n=ansible | [WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {% %}. Found: item.labname == "{{ eve_ng_folder_name }}/{{ | ||||||
|  | lab }}" | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:10:02,895 p=80164 u=rob n=ansible | skipping: [eveng] => (item={'podid': '0', 'username': 'admin', 'online': '1', 'uuid': '0fc5edef-8cf2-4400-9a1c-0c4c41a1a881', 'size': 0.1996, 'sat': '0', 'sat_name': 'master', 'labid': 1001, 'labname': '/ecmp wireguard\n', 'cpu': 0, 'mem': 0})  | ||||||
|  | 2023-06-07 10:10:02,898 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:10:02,898 p=80164 u=rob n=ansible | skipping: [eveng] => (item={'podid': '0', 'username': 'admin', 'online': '1', 'uuid': '9785926c-63ec-42c0-a1ca-a386b9013151', 'size': 0.4115, 'sat': '0', 'sat_name': 'master', 'labid': 1002, 'labname': '/layer2 via IPSec\n', 'cpu': 0, 'mem': 0})  | ||||||
|  | 2023-06-07 10:10:02,898 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:10:02,900 p=80164 u=rob n=ansible | skipping: [eveng] => (item={'podid': '0', 'username': 'admin', 'online': '1', 'uuid': 'aa98095e-3b64-45aa-b883-e2b7fdfac08c', 'size': 0.7722, 'sat': '0', 'sat_name': 'master', 'labid': 1003, 'labname': '/ospf\n', 'cpu': 0, 'mem': 0})  | ||||||
|  | 2023-06-07 10:10:02,903 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:10:02,903 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:10:02,907 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: delete existing lab] ******************************************************************************************************* | ||||||
|  | 2023-06-07 10:10:02,926 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:10:02,929 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:10:02,935 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:10:03,329 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:10:03,332 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Ensure labtest is present] ************************************************************************************************* | ||||||
|  | 2023-06-07 10:10:03,353 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:10:03,355 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:10:03,361 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:10:03,573 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:10:03,577 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Create Wireguard Lab] ****************************************************************************************************** | ||||||
|  | 2023-06-07 10:10:03,597 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:10:03,600 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:10:03,605 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:10:04,068 p=80164 u=rob n=ansible | changed: [eveng] | ||||||
|  | 2023-06-07 10:10:04,072 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Login to EVE-NG and get Cookie] ******************************************************************************************** | ||||||
|  | 2023-06-07 10:10:04,094 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:10:04,094 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:10:04,100 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:10:04,699 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:10:04,704 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: start vyos-oobm] *********************************************************************************************************** | ||||||
|  | 2023-06-07 10:10:04,727 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:10:04,729 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:10:04,734 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:10:05,728 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:10:05,732 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Wait for vyos-oobm] ******************************************************************************************************** | ||||||
|  | 2023-06-07 10:10:05,751 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:10:05,754 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:10:05,759 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:10:06,829 p=80164 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:10:36,939 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:10:36,947 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:10:36,947 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:10:36,948 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:10:36,949 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:10:36,949 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:10:36,950 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:10:36,951 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:10:36,951 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] | socket.timeout | ||||||
|  | 2023-06-07 10:10:36,952 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |  | ||||||
|  | 2023-06-07 10:10:36,952 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:10:36,953 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |  | ||||||
|  | 2023-06-07 10:10:36,953 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:10:36,954 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:10:36,954 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |     self._check_banner() | ||||||
|  | 2023-06-07 10:10:36,955 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:10:36,955 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |     raise SSHException( | ||||||
|  | 2023-06-07 10:10:36,956 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:10:36,956 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |  | ||||||
|  | 2023-06-07 10:11:08,047 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:11:08,051 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:11:08,052 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:11:08,053 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:11:08,054 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:11:08,055 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:11:08,056 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:11:08,057 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:11:08,059 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] | socket.timeout | ||||||
|  | 2023-06-07 10:11:08,059 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |  | ||||||
|  | 2023-06-07 10:11:08,060 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:11:08,061 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |  | ||||||
|  | 2023-06-07 10:11:08,062 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:11:08,062 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:11:08,063 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |     self._check_banner() | ||||||
|  | 2023-06-07 10:11:08,063 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:11:08,064 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |     raise SSHException( | ||||||
|  | 2023-06-07 10:11:08,065 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:11:08,065 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] |  | ||||||
|  | 2023-06-07 10:11:09,596 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:11:09,830 p=80519 u=rob n=p=80519 u=rob | paramiko [vyos-oobm] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:11:10,978 p=80164 u=rob n=ansible | ok: [vyos-oobm] | ||||||
|  | 2023-06-07 10:11:10,982 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Login to EVE-NG and get Cookie] ******************************************************************************************** | ||||||
|  | 2023-06-07 10:11:11,000 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:11:11,002 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:11:11,007 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:11:11,964 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:11:11,973 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: get lab status] ************************************************************************************************************ | ||||||
|  | 2023-06-07 10:11:12,005 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:11:12,007 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:11:12,014 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:11:12,450 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:11:12,459 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: start all nodes] *********************************************************************************************************** | ||||||
|  | 2023-06-07 10:11:12,491 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:11:12,492 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:11:12,497 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:11:12,954 p=80164 u=rob n=ansible | ok: [eveng] => (item=1) | ||||||
|  | 2023-06-07 10:11:14,513 p=80164 u=rob n=ansible | ok: [eveng] => (item=4) | ||||||
|  | 2023-06-07 10:11:15,830 p=80164 u=rob n=ansible | ok: [eveng] => (item=6) | ||||||
|  | 2023-06-07 10:11:16,777 p=80164 u=rob n=ansible | ok: [eveng] => (item=2) | ||||||
|  | 2023-06-07 10:11:17,668 p=80164 u=rob n=ansible | ok: [eveng] => (item=3) | ||||||
|  | 2023-06-07 10:11:17,681 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Wait for vyos nodes] ******************************************************************************************************* | ||||||
|  | 2023-06-07 10:11:17,712 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:11:17,713 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:11:18,839 p=80164 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:11:18,839 p=80164 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:11:48,869 p=80658 u=rob n=p=80658 u=rob | paramiko [central] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:11:48,872 p=80658 u=rob n=p=80658 u=rob | paramiko [central] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:11:48,872 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:11:48,872 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:11:48,872 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:11:48,873 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:11:48,873 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:11:48,873 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:11:48,873 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:11:48,873 p=80658 u=rob n=p=80658 u=rob | paramiko [central] | socket.timeout | ||||||
|  | 2023-06-07 10:11:48,874 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |  | ||||||
|  | 2023-06-07 10:11:48,874 p=80658 u=rob n=p=80658 u=rob | paramiko [central] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:11:48,874 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |  | ||||||
|  | 2023-06-07 10:11:48,874 p=80658 u=rob n=p=80658 u=rob | paramiko [central] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:11:48,874 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:11:48,874 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |     self._check_banner() | ||||||
|  | 2023-06-07 10:11:48,875 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:11:48,875 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |     raise SSHException( | ||||||
|  | 2023-06-07 10:11:48,875 p=80658 u=rob n=p=80658 u=rob | paramiko [central] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:11:48,875 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |  | ||||||
|  | 2023-06-07 10:11:48,875 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:11:48,875 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:11:48,876 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:11:48,876 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:11:48,876 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:11:48,876 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:11:48,876 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:11:48,876 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] | socket.timeout | ||||||
|  | 2023-06-07 10:11:48,877 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |  | ||||||
|  | 2023-06-07 10:11:48,877 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:11:48,877 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |  | ||||||
|  | 2023-06-07 10:11:48,877 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:11:48,878 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:11:48,878 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |     self._check_banner() | ||||||
|  | 2023-06-07 10:11:48,878 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:11:48,878 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |     raise SSHException( | ||||||
|  | 2023-06-07 10:11:48,878 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:11:48,878 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |  | ||||||
|  | 2023-06-07 10:12:06,206 p=80406 u=rob n=ansible | persistent connection idle timeout triggered, timeout value is 120 secs. | ||||||
|  | See the timeout setting options in the Network Debug and Troubleshooting Guide. | ||||||
|  | 2023-06-07 10:12:06,309 p=80406 u=rob n=ansible | shutdown complete | ||||||
|  | 2023-06-07 10:12:19,919 p=80658 u=rob n=p=80658 u=rob | paramiko [central] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:12:19,920 p=80658 u=rob n=p=80658 u=rob | paramiko [central] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:12:19,920 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:12:19,920 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:12:19,920 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:12:19,920 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:12:19,920 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:12:19,920 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:12:19,921 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:12:19,921 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:12:19,921 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:12:19,921 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:12:19,921 p=80658 u=rob n=p=80658 u=rob | paramiko [central] | socket.timeout | ||||||
|  | 2023-06-07 10:12:19,921 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:12:19,921 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |  | ||||||
|  | 2023-06-07 10:12:19,921 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:12:19,921 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:12:19,921 p=80658 u=rob n=p=80658 u=rob | paramiko [central] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:12:19,922 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:12:19,922 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |  | ||||||
|  | 2023-06-07 10:12:19,922 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] | socket.timeout | ||||||
|  | 2023-06-07 10:12:19,922 p=80658 u=rob n=p=80658 u=rob | paramiko [central] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:12:19,922 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |  | ||||||
|  | 2023-06-07 10:12:19,922 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:12:19,922 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:12:19,922 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |     self._check_banner() | ||||||
|  | 2023-06-07 10:12:19,922 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |  | ||||||
|  | 2023-06-07 10:12:19,922 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:12:19,923 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:12:19,923 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |     raise SSHException( | ||||||
|  | 2023-06-07 10:12:19,923 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:12:19,923 p=80658 u=rob n=p=80658 u=rob | paramiko [central] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:12:19,923 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |     self._check_banner() | ||||||
|  | 2023-06-07 10:12:19,923 p=80658 u=rob n=p=80658 u=rob | paramiko [central] |  | ||||||
|  | 2023-06-07 10:12:19,923 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:12:19,923 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |     raise SSHException( | ||||||
|  | 2023-06-07 10:12:19,923 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:12:19,924 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] |  | ||||||
|  | 2023-06-07 10:12:21,504 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:12:21,520 p=80658 u=rob n=p=80658 u=rob | paramiko [central] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:12:21,743 p=80658 u=rob n=p=80658 u=rob | paramiko [central] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:12:21,743 p=80659 u=rob n=p=80659 u=rob | paramiko [branch] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:12:22,853 p=80164 u=rob n=ansible | ok: [branch] | ||||||
|  | 2023-06-07 10:12:22,855 p=80164 u=rob n=ansible | ok: [central] | ||||||
|  | 2023-06-07 10:12:22,857 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : show wireguard keypairs pubkey default] *********************************************************************************************** | ||||||
|  | 2023-06-07 10:12:22,878 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:12:22,878 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:12:23,993 p=80405 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use  | ||||||
|  | ansible.utils.display.Display.verbosity instead. This feature will be removed  | ||||||
|  | in version 2.18. Deprecation warnings can be disabled by setting  | ||||||
|  | deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:12:23,993 p=80407 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use  | ||||||
|  | ansible.utils.display.Display.verbosity instead. This feature will be removed  | ||||||
|  | in version 2.18. Deprecation warnings can be disabled by setting  | ||||||
|  | deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:12:24,508 p=80405 u=rob n=p=80405 u=rob | paramiko [branch] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:12:24,509 p=80407 u=rob n=p=80407 u=rob | paramiko [central] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:12:24,757 p=80407 u=rob n=p=80407 u=rob | paramiko [central] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:12:24,759 p=80405 u=rob n=p=80405 u=rob | paramiko [branch] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:12:26,453 p=80164 u=rob n=ansible | ok: [central] | ||||||
|  | 2023-06-07 10:12:26,482 p=80164 u=rob n=ansible | ok: [branch] | ||||||
|  | 2023-06-07 10:12:26,489 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : fail] ********************************************************************************************************************************* | ||||||
|  | 2023-06-07 10:12:26,516 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:12:26,525 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:12:27,651 p=80164 u=rob n=ansible | fatal: [central]: FAILED! => {"changed": false, "msg": "Failed as requested from task"} | ||||||
|  | 2023-06-07 10:12:27,651 p=80164 u=rob n=ansible | fatal: [branch]: FAILED! => {"changed": false, "msg": "Failed as requested from task"} | ||||||
|  | 2023-06-07 10:12:27,662 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : generate wireguard default-keypair] *************************************************************************************************** | ||||||
|  | 2023-06-07 10:12:29,117 p=80164 u=rob n=ansible | ok: [central] | ||||||
|  | 2023-06-07 10:12:29,120 p=80164 u=rob n=ansible | ok: [branch] | ||||||
|  | 2023-06-07 10:12:29,126 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : show wireguard keypairs pubkey default] *********************************************************************************************** | ||||||
|  | 2023-06-07 10:12:29,143 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:12:29,151 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:12:30,606 p=80164 u=rob n=ansible | ok: [central] | ||||||
|  | 2023-06-07 10:12:30,609 p=80164 u=rob n=ansible | ok: [branch] | ||||||
|  | 2023-06-07 10:12:30,613 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : setup nodes] ************************************************************************************************************************** | ||||||
|  | 2023-06-07 10:12:30,630 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:12:30,639 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:12:37,750 p=80164 u=rob n=ansible | [WARNING]: To ensure idempotency and correct diff the input configuration lines should be similar to how they appear if present in the running configuration | ||||||
|  | on device including the indentation | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:12:37,750 p=80164 u=rob n=ansible | changed: [branch] | ||||||
|  | 2023-06-07 10:12:37,868 p=80164 u=rob n=ansible | changed: [central] | ||||||
|  | 2023-06-07 10:12:37,882 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Login to EVE-NG and get Cookie] ******************************************************************************************** | ||||||
|  | 2023-06-07 10:12:37,911 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:12:37,911 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:12:37,916 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:12:38,890 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:12:38,894 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: stop nodes id] ************************************************************************************************************* | ||||||
|  | 2023-06-07 10:12:38,917 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:12:38,919 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:12:38,923 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:12:38,932 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:12:38,936 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: wait after stop] *********************************************************************************************************** | ||||||
|  | 2023-06-07 10:12:38,950 p=80164 u=rob n=ansible | Pausing for 5 seconds | ||||||
|  | 2023-06-07 10:12:38,950 p=80164 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:12:43,964 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:12:43,977 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: start nodes id] ************************************************************************************************************ | ||||||
|  | 2023-06-07 10:12:44,011 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:12:44,016 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:12:44,023 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:12:44,029 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:12:44,033 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: wait after start] ********************************************************************************************************** | ||||||
|  | 2023-06-07 10:12:44,047 p=80164 u=rob n=ansible | Pausing for 5 seconds | ||||||
|  | 2023-06-07 10:12:44,047 p=80164 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:12:49,059 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:12:49,070 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: wait, b/c the ping often failed without a short break] ********************************************************************* | ||||||
|  | 2023-06-07 10:12:49,083 p=80164 u=rob n=ansible | Pausing for 30 seconds | ||||||
|  | 2023-06-07 10:12:49,083 p=80164 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:13:19,097 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:13:19,113 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: do ping test] ************************************************************************************************************** | ||||||
|  | 2023-06-07 10:13:19,138 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:13:19,141 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:13:24,531 p=80164 u=rob n=ansible | ok: [branch] => (item=10.0.1.100) | ||||||
|  | 2023-06-07 10:13:24,583 p=80164 u=rob n=ansible | ok: [central] => (item=10.0.2.100) | ||||||
|  | 2023-06-07 10:13:24,595 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: execute test commands] ***************************************************************************************************** | ||||||
|  | 2023-06-07 10:13:24,620 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:13:24,623 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:13:25,908 p=80164 u=rob n=ansible | ok: [central] => (item={'desc': 'Test if IP is set to interface', 'command': "ip -4 addr show dev eth2 | grep inet | tr -s ' ' | cut -d' ' -f3 | head -n 1", 'wait_for': ['result[0] contains "10.0.1.254/24"']}) | ||||||
|  | 2023-06-07 10:13:26,079 p=80164 u=rob n=ansible | ok: [branch] => (item={'desc': 'show interfaces wireguard', 'command': 'show interfaces wireguard', 'wait_for': ['result[0] contains "S - State, L - Link, u - Up, D - Down, A - Admin Down"', 'result[0] contains "Interface        IP Address                        S/L  Description"', 'result[0] contains "---------        ----------                        ---  -----------"', 'result[0] contains "wg01             192.168.0.2/24                    u/u  VPN-to-central"']}) | ||||||
|  | 2023-06-07 10:13:27,330 p=80164 u=rob n=ansible | ok: [central] => (item={'desc': 'show interfaces wireguard', 'command': 'show interfaces wireguard', 'wait_for': ['result[0] contains "S - State, L - Link, u - Up, D - Down, A - Admin Down"', 'result[0] contains "Interface        IP Address                        S/L  Description"', 'result[0] contains "---------        ----------                        ---  -----------"', 'result[0] contains "wg01             192.168.0.1/24                    u/u  VPN-to-Branch"']}) | ||||||
|  | 2023-06-07 10:13:27,342 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: register stdout commands] ************************************************************************************************** | ||||||
|  | 2023-06-07 10:13:27,378 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:13:27,384 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:13:28,867 p=80164 u=rob n=ansible | ok: [branch] => (item={'name': 'show_interfaces_wireguard', 'command': 'show interfaces wireguard'}) | ||||||
|  | 2023-06-07 10:13:28,873 p=80164 u=rob n=ansible | ok: [central] => (item={'name': 'show_interfaces_wireguard', 'command': 'show interfaces wireguard'}) | ||||||
|  | 2023-06-07 10:13:33,188 p=80164 u=rob n=ansible | ok: [central] => (item={'name': 'ping_branch_pc', 'command': 'ping 10.0.2.100 count 4'}) | ||||||
|  | 2023-06-07 10:13:33,201 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Set variables] ************************************************************************************************************* | ||||||
|  | 2023-06-07 10:13:33,237 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:13:33,242 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:13:34,358 p=80164 u=rob n=ansible | ok: [branch] | ||||||
|  | 2023-06-07 10:13:34,359 p=80164 u=rob n=ansible | ok: [central] | ||||||
|  | 2023-06-07 10:13:34,367 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Reboot vyos] *************************************************************************************************************** | ||||||
|  | 2023-06-07 10:13:34,388 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:13:34,397 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:13:35,725 p=80164 u=rob n=ansible | ok: [central] | ||||||
|  | 2023-06-07 10:13:35,726 p=80164 u=rob n=ansible | ok: [branch] | ||||||
|  | 2023-06-07 10:13:35,731 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: wait while shutdown] ******************************************************************************************************* | ||||||
|  | 2023-06-07 10:13:35,745 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:13:35,749 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Wait for vyos nodes] ******************************************************************************************************* | ||||||
|  | 2023-06-07 10:13:35,765 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:13:35,772 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:13:36,881 p=80164 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:13:36,882 p=80164 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:13:37,373 p=80827 u=rob n=p=80827 u=rob | paramiko [central] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:13:37,377 p=80828 u=rob n=p=80828 u=rob | paramiko [branch] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:13:37,597 p=80827 u=rob n=p=80827 u=rob | paramiko [central] | Auth banner: b'System is going down. Unprivileged users are not permitted to log in anymore. For technical details, see pam_nologin(8).\n\n' | ||||||
|  | 2023-06-07 10:13:37,614 p=80828 u=rob n=p=80828 u=rob | paramiko [branch] | Auth banner: b'System is going down. Unprivileged users are not permitted to log in anymore. For technical details, see pam_nologin(8).\n\n' | ||||||
|  | 2023-06-07 10:15:36,253 p=80407 u=rob n=ansible | persistent connection idle timeout triggered, timeout value is 120 secs. | ||||||
|  | See the timeout setting options in the Network Debug and Troubleshooting Guide. | ||||||
|  | 2023-06-07 10:15:36,254 p=80405 u=rob n=ansible | persistent connection idle timeout triggered, timeout value is 120 secs. | ||||||
|  | See the timeout setting options in the Network Debug and Troubleshooting Guide. | ||||||
|  | 2023-06-07 10:15:36,357 p=80407 u=rob n=ansible | shutdown complete | ||||||
|  | 2023-06-07 10:15:36,358 p=80405 u=rob n=ansible | shutdown complete | ||||||
|  | 2023-06-07 10:15:39,212 p=80828 u=rob n=p=80828 u=rob | paramiko [branch] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:15:39,217 p=80827 u=rob n=p=80827 u=rob | paramiko [central] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:15:39,432 p=80827 u=rob n=p=80827 u=rob | paramiko [central] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:15:39,435 p=80828 u=rob n=p=80828 u=rob | paramiko [branch] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:15:40,657 p=80164 u=rob n=ansible | ok: [central] | ||||||
|  | 2023-06-07 10:15:40,676 p=80164 u=rob n=ansible | ok: [branch] | ||||||
|  | 2023-06-07 10:15:40,680 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Login to EVE-NG and get Cookie] ******************************************************************************************** | ||||||
|  | 2023-06-07 10:15:40,701 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:15:40,703 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:15:40,708 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:15:41,575 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:15:41,579 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: stop nodes id] ************************************************************************************************************* | ||||||
|  | 2023-06-07 10:15:41,602 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:15:41,607 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:15:41,613 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:15:41,618 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:15:41,621 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: wait after stop] *********************************************************************************************************** | ||||||
|  | 2023-06-07 10:15:41,635 p=80164 u=rob n=ansible | Pausing for 5 seconds | ||||||
|  | 2023-06-07 10:15:41,635 p=80164 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:15:46,650 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:15:46,656 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: start nodes id] ************************************************************************************************************ | ||||||
|  | 2023-06-07 10:15:46,685 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:15:46,690 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:15:46,695 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:15:46,702 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:15:46,706 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: wait after start] ********************************************************************************************************** | ||||||
|  | 2023-06-07 10:15:46,720 p=80164 u=rob n=ansible | Pausing for 5 seconds | ||||||
|  | 2023-06-07 10:15:46,720 p=80164 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:15:51,730 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:15:51,738 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: wait, b/c the ping often failed without a short break] ********************************************************************* | ||||||
|  | 2023-06-07 10:15:51,757 p=80164 u=rob n=ansible | Pausing for 30 seconds | ||||||
|  | 2023-06-07 10:15:51,758 p=80164 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:16:21,767 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:16:21,776 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: do ping test] ************************************************************************************************************** | ||||||
|  | 2023-06-07 10:16:21,811 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:16:21,811 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:16:22,978 p=80164 u=rob n=ansible | network_os is set to vyos | ||||||
|  | 2023-06-07 10:16:22,979 p=80164 u=rob n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:16:22,979 p=80164 u=rob n=ansible | network_os is set to vyos | ||||||
|  | 2023-06-07 10:16:22,979 p=80164 u=rob n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:16:22,982 p=80942 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use  | ||||||
|  | ansible.utils.display.Display.verbosity instead. This feature will be removed  | ||||||
|  | in version 2.18. Deprecation warnings can be disabled by setting  | ||||||
|  | deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:16:22,986 p=80945 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use  | ||||||
|  | ansible.utils.display.Display.verbosity instead. This feature will be removed  | ||||||
|  | in version 2.18. Deprecation warnings can be disabled by setting  | ||||||
|  | deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:16:23,526 p=80945 u=rob n=p=80945 u=rob | paramiko [branch] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:16:23,528 p=80942 u=rob n=p=80942 u=rob | paramiko [central] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:16:23,751 p=80942 u=rob n=p=80942 u=rob | paramiko [central] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:16:23,757 p=80945 u=rob n=p=80945 u=rob | paramiko [branch] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:16:29,367 p=80164 u=rob n=ansible | ok: [central] => (item=10.0.2.100) | ||||||
|  | 2023-06-07 10:16:29,468 p=80164 u=rob n=ansible | ok: [branch] => (item=10.0.1.100) | ||||||
|  | 2023-06-07 10:16:29,479 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: execute test commands] ***************************************************************************************************** | ||||||
|  | 2023-06-07 10:16:29,506 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:16:29,510 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:16:30,791 p=80164 u=rob n=ansible | ok: [central] => (item={'desc': 'Test if IP is set to interface', 'command': "ip -4 addr show dev eth2 | grep inet | tr -s ' ' | cut -d' ' -f3 | head -n 1", 'wait_for': ['result[0] contains "10.0.1.254/24"']}) | ||||||
|  | 2023-06-07 10:16:30,977 p=80164 u=rob n=ansible | ok: [branch] => (item={'desc': 'show interfaces wireguard', 'command': 'show interfaces wireguard', 'wait_for': ['result[0] contains "S - State, L - Link, u - Up, D - Down, A - Admin Down"', 'result[0] contains "Interface        IP Address                        S/L  Description"', 'result[0] contains "---------        ----------                        ---  -----------"', 'result[0] contains "wg01             192.168.0.2/24                    u/u  VPN-to-central"']}) | ||||||
|  | 2023-06-07 10:16:32,249 p=80164 u=rob n=ansible | ok: [central] => (item={'desc': 'show interfaces wireguard', 'command': 'show interfaces wireguard', 'wait_for': ['result[0] contains "S - State, L - Link, u - Up, D - Down, A - Admin Down"', 'result[0] contains "Interface        IP Address                        S/L  Description"', 'result[0] contains "---------        ----------                        ---  -----------"', 'result[0] contains "wg01             192.168.0.1/24                    u/u  VPN-to-Branch"']}) | ||||||
|  | 2023-06-07 10:16:32,261 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: register stdout commands] ************************************************************************************************** | ||||||
|  | 2023-06-07 10:16:32,296 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:16:32,301 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:16:32,308 p=80164 u=rob n=ansible | skipping: [central] => (item={'name': 'show_interfaces_wireguard', 'command': 'show interfaces wireguard'})  | ||||||
|  | 2023-06-07 10:16:32,311 p=80164 u=rob n=ansible | skipping: [branch] => (item={'name': 'show_interfaces_wireguard', 'command': 'show interfaces wireguard'})  | ||||||
|  | 2023-06-07 10:16:32,314 p=80164 u=rob n=ansible | skipping: [central] => (item={'name': 'ping_branch_pc', 'command': 'ping 10.0.2.100 count 4'})  | ||||||
|  | 2023-06-07 10:16:32,316 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:16:32,316 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:16:32,320 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Set variables] ************************************************************************************************************* | ||||||
|  | 2023-06-07 10:16:32,340 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:16:32,342 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:16:32,347 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:16:32,352 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:16:32,357 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: ake sure tmp dir exist] **************************************************************************************************** | ||||||
|  | 2023-06-07 10:16:32,383 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:16:32,385 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:16:32,391 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:16:32,620 p=80164 u=rob n=ansible | ok: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:16:32,624 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: register status of tmp/vyos-1.4-rolling-202306070317-amd64.iso] ************************************************************ | ||||||
|  | 2023-06-07 10:16:32,646 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:16:32,650 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:16:32,650 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:16:32,777 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:16:32,784 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: ownload upgrade_iso] ******************************************************************************************************* | ||||||
|  | 2023-06-07 10:16:32,812 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:16:32,814 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:16:32,820 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:16:33,544 p=80164 u=rob n=ansible | ok: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:16:33,551 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Copy iso to host] ********************************************************************************************************** | ||||||
|  | 2023-06-07 10:16:33,567 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:16:33,574 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:16:35,267 p=80945 u=rob n=p=80945 u=rob | paramiko [branch] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:16:35,267 p=80942 u=rob n=p=80942 u=rob | paramiko [central] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:16:35,515 p=80945 u=rob n=p=80945 u=rob | paramiko [branch] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:16:35,519 p=80942 u=rob n=p=80942 u=rob | paramiko [central] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:16:36,291 p=80945 u=rob n=p=80945 u=rob | paramiko [branch] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:16:36,297 p=80942 u=rob n=p=80942 u=rob | paramiko [central] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:16:36,520 p=80945 u=rob n=p=80945 u=rob | paramiko [branch] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:16:36,530 p=80942 u=rob n=p=80942 u=rob | paramiko [central] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:16:51,774 p=80164 u=rob n=ansible | changed: [central] | ||||||
|  | 2023-06-07 10:16:54,990 p=80164 u=rob n=ansible | changed: [branch] | ||||||
|  | 2023-06-07 10:16:54,997 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: upgrade vyos] ************************************************************************************************************** | ||||||
|  | 2023-06-07 10:16:55,015 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:16:55,022 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:17:05,780 p=80164 u=rob n=ansible | ok: [central] | ||||||
|  | 2023-06-07 10:17:05,949 p=80164 u=rob n=ansible | ok: [branch] | ||||||
|  | 2023-06-07 10:17:05,958 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Reboot vyos] *************************************************************************************************************** | ||||||
|  | 2023-06-07 10:17:05,989 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:17:05,990 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:17:07,614 p=80164 u=rob n=ansible | ok: [branch] | ||||||
|  | 2023-06-07 10:17:07,640 p=80164 u=rob n=ansible | ok: [central] | ||||||
|  | 2023-06-07 10:17:07,646 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: wait while shutdown] ******************************************************************************************************* | ||||||
|  | 2023-06-07 10:17:07,663 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:17:07,666 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Wait for vyos nodes] ******************************************************************************************************* | ||||||
|  | 2023-06-07 10:17:07,690 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:17:07,691 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:17:08,793 p=80164 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:17:08,793 p=80164 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use ansible.utils.display.Display.verbosity instead. This feature will be removed in version 2.18. | ||||||
|  |  Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:17:09,530 p=81056 u=rob n=p=81056 u=rob | paramiko [central] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:17:09,543 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] | Connected (version 2.0, client OpenSSH_7.9p1) | ||||||
|  | 2023-06-07 10:17:09,773 p=81056 u=rob n=p=81056 u=rob | paramiko [central] | Auth banner: b'System is going down. Unprivileged users are not permitted to log in anymore. For technical details, see pam_nologin(8).\n\n' | ||||||
|  | 2023-06-07 10:17:09,775 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] | Auth banner: b'System is going down. Unprivileged users are not permitted to log in anymore. For technical details, see pam_nologin(8).\n\n' | ||||||
|  | 2023-06-07 10:19:08,164 p=80945 u=rob n=ansible | persistent connection idle timeout triggered, timeout value is 120 secs. | ||||||
|  | See the timeout setting options in the Network Debug and Troubleshooting Guide. | ||||||
|  | 2023-06-07 10:19:08,164 p=80942 u=rob n=ansible | persistent connection idle timeout triggered, timeout value is 120 secs. | ||||||
|  | See the timeout setting options in the Network Debug and Troubleshooting Guide. | ||||||
|  | 2023-06-07 10:19:08,268 p=80945 u=rob n=ansible | shutdown complete | ||||||
|  | 2023-06-07 10:19:08,269 p=80942 u=rob n=ansible | shutdown complete | ||||||
|  | 2023-06-07 10:19:40,839 p=81056 u=rob n=p=81056 u=rob | paramiko [central] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:19:40,842 p=81056 u=rob n=p=81056 u=rob | paramiko [central] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:19:40,843 p=81056 u=rob n=p=81056 u=rob | paramiko [central] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:19:40,843 p=81056 u=rob n=p=81056 u=rob | paramiko [central] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:19:40,843 p=81056 u=rob n=p=81056 u=rob | paramiko [central] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:19:40,843 p=81056 u=rob n=p=81056 u=rob | paramiko [central] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:19:40,844 p=81056 u=rob n=p=81056 u=rob | paramiko [central] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:19:40,844 p=81056 u=rob n=p=81056 u=rob | paramiko [central] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:19:40,844 p=81056 u=rob n=p=81056 u=rob | paramiko [central] | socket.timeout | ||||||
|  | 2023-06-07 10:19:40,844 p=81056 u=rob n=p=81056 u=rob | paramiko [central] |  | ||||||
|  | 2023-06-07 10:19:40,844 p=81056 u=rob n=p=81056 u=rob | paramiko [central] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:19:40,844 p=81056 u=rob n=p=81056 u=rob | paramiko [central] |  | ||||||
|  | 2023-06-07 10:19:40,845 p=81056 u=rob n=p=81056 u=rob | paramiko [central] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:19:40,845 p=81056 u=rob n=p=81056 u=rob | paramiko [central] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:19:40,845 p=81056 u=rob n=p=81056 u=rob | paramiko [central] |     self._check_banner() | ||||||
|  | 2023-06-07 10:19:40,845 p=81056 u=rob n=p=81056 u=rob | paramiko [central] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:19:40,846 p=81056 u=rob n=p=81056 u=rob | paramiko [central] |     raise SSHException( | ||||||
|  | 2023-06-07 10:19:40,846 p=81056 u=rob n=p=81056 u=rob | paramiko [central] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:19:40,846 p=81056 u=rob n=p=81056 u=rob | paramiko [central] |  | ||||||
|  | 2023-06-07 10:19:40,850 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] | Exception (client): Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:19:40,853 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:19:40,853 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2270, in _check_banner | ||||||
|  | 2023-06-07 10:19:40,853 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] |     buf = self.packetizer.readline(timeout) | ||||||
|  | 2023-06-07 10:19:40,854 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 374, in readline | ||||||
|  | 2023-06-07 10:19:40,854 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] |     buf += self._read_timeout(timeout) | ||||||
|  | 2023-06-07 10:19:40,854 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/packet.py", line 611, in _read_timeout | ||||||
|  | 2023-06-07 10:19:40,854 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] |     raise socket.timeout() | ||||||
|  | 2023-06-07 10:19:40,854 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] | socket.timeout | ||||||
|  | 2023-06-07 10:19:40,854 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] |  | ||||||
|  | 2023-06-07 10:19:40,855 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] | During handling of the above exception, another exception occurred: | ||||||
|  | 2023-06-07 10:19:40,855 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] |  | ||||||
|  | 2023-06-07 10:19:40,855 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] | Traceback (most recent call last): | ||||||
|  | 2023-06-07 10:19:40,855 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2093, in run | ||||||
|  | 2023-06-07 10:19:40,855 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] |     self._check_banner() | ||||||
|  | 2023-06-07 10:19:40,855 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] |   File "/Users/rob/.local/share/virtualenvs/vyos-eveng-b9X2mBdh/lib/python3.9/site-packages/paramiko/transport.py", line 2274, in _check_banner | ||||||
|  | 2023-06-07 10:19:40,856 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] |     raise SSHException( | ||||||
|  | 2023-06-07 10:19:40,856 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner | ||||||
|  | 2023-06-07 10:19:40,856 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] |  | ||||||
|  | 2023-06-07 10:19:42,471 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] | Connected (version 2.0, client OpenSSH_9.2p1) | ||||||
|  | 2023-06-07 10:19:42,492 p=81056 u=rob n=p=81056 u=rob | paramiko [central] | Connected (version 2.0, client OpenSSH_9.2p1) | ||||||
|  | 2023-06-07 10:19:42,719 p=81057 u=rob n=p=81057 u=rob | paramiko [branch] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:19:42,742 p=81056 u=rob n=p=81056 u=rob | paramiko [central] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:19:44,321 p=80164 u=rob n=ansible | ok: [central] | ||||||
|  | 2023-06-07 10:19:44,321 p=80164 u=rob n=ansible | ok: [branch] | ||||||
|  | 2023-06-07 10:19:44,325 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: clear tmp dir] ************************************************************************************************************* | ||||||
|  | 2023-06-07 10:19:44,337 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:19:44,341 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Login to EVE-NG and get Cookie] ******************************************************************************************** | ||||||
|  | 2023-06-07 10:19:44,362 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:19:44,364 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:19:44,369 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:19:45,354 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:19:45,361 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: stop nodes id] ************************************************************************************************************* | ||||||
|  | 2023-06-07 10:19:45,390 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:19:45,396 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:19:45,401 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:19:45,407 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:19:45,411 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: wait after stop] *********************************************************************************************************** | ||||||
|  | 2023-06-07 10:19:45,426 p=80164 u=rob n=ansible | Pausing for 5 seconds | ||||||
|  | 2023-06-07 10:19:45,426 p=80164 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:19:50,441 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:19:50,451 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: start nodes id] ************************************************************************************************************ | ||||||
|  | 2023-06-07 10:19:50,481 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:19:50,483 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:19:50,489 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:19:50,496 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:19:50,500 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: wait after start] ********************************************************************************************************** | ||||||
|  | 2023-06-07 10:19:50,515 p=80164 u=rob n=ansible | Pausing for 5 seconds | ||||||
|  | 2023-06-07 10:19:50,516 p=80164 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:19:55,536 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:19:55,550 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: wait, b/c the ping often failed without a short break] ********************************************************************* | ||||||
|  | 2023-06-07 10:19:55,572 p=80164 u=rob n=ansible | Pausing for 30 seconds | ||||||
|  | 2023-06-07 10:19:55,573 p=80164 u=rob n=ansible | (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) | ||||||
|  | 2023-06-07 10:20:25,593 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:20:25,610 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: do ping test] ************************************************************************************************************** | ||||||
|  | 2023-06-07 10:20:25,644 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:20:25,646 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:20:26,829 p=80164 u=rob n=ansible | network_os is set to vyos | ||||||
|  | 2023-06-07 10:20:26,831 p=80164 u=rob n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:20:26,831 p=80164 u=rob n=ansible | network_os is set to vyos | ||||||
|  | 2023-06-07 10:20:26,831 p=80164 u=rob n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko | ||||||
|  | 
 | ||||||
|  | 2023-06-07 10:20:26,840 p=81188 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use  | ||||||
|  | ansible.utils.display.Display.verbosity instead. This feature will be removed  | ||||||
|  | in version 2.18. Deprecation warnings can be disabled by setting  | ||||||
|  | deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:20:26,840 p=81189 u=rob n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use  | ||||||
|  | ansible.utils.display.Display.verbosity instead. This feature will be removed  | ||||||
|  | in version 2.18. Deprecation warnings can be disabled by setting  | ||||||
|  | deprecation_warnings=False in ansible.cfg. | ||||||
|  | 2023-06-07 10:20:27,354 p=81189 u=rob n=p=81189 u=rob | paramiko [central] | Connected (version 2.0, client OpenSSH_9.2p1) | ||||||
|  | 2023-06-07 10:20:27,363 p=81188 u=rob n=p=81188 u=rob | paramiko [branch] | Connected (version 2.0, client OpenSSH_9.2p1) | ||||||
|  | 2023-06-07 10:20:27,595 p=81189 u=rob n=p=81189 u=rob | paramiko [central] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:20:27,603 p=81188 u=rob n=p=81188 u=rob | paramiko [branch] | Authentication (publickey) successful! | ||||||
|  | 2023-06-07 10:20:35,488 p=80164 u=rob n=ansible | ok: [branch] => (item=10.0.1.100) | ||||||
|  | 2023-06-07 10:20:35,492 p=80164 u=rob n=ansible | ok: [central] => (item=10.0.2.100) | ||||||
|  | 2023-06-07 10:20:35,497 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: execute test commands] ***************************************************************************************************** | ||||||
|  | 2023-06-07 10:20:35,523 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:20:35,526 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:20:36,829 p=80164 u=rob n=ansible | ok: [central] => (item={'desc': 'Test if IP is set to interface', 'command': "ip -4 addr show dev eth2 | grep inet | tr -s ' ' | cut -d' ' -f3 | head -n 1", 'wait_for': ['result[0] contains "10.0.1.254/24"']}) | ||||||
|  | 2023-06-07 10:20:37,047 p=80164 u=rob n=ansible | ok: [branch] => (item={'desc': 'show interfaces wireguard', 'command': 'show interfaces wireguard', 'wait_for': ['result[0] contains "S - State, L - Link, u - Up, D - Down, A - Admin Down"', 'result[0] contains "Interface        IP Address                        S/L  Description"', 'result[0] contains "---------        ----------                        ---  -----------"', 'result[0] contains "wg01             192.168.0.2/24                    u/u  VPN-to-central"']}) | ||||||
|  | 2023-06-07 10:20:38,295 p=80164 u=rob n=ansible | ok: [central] => (item={'desc': 'show interfaces wireguard', 'command': 'show interfaces wireguard', 'wait_for': ['result[0] contains "S - State, L - Link, u - Up, D - Down, A - Admin Down"', 'result[0] contains "Interface        IP Address                        S/L  Description"', 'result[0] contains "---------        ----------                        ---  -----------"', 'result[0] contains "wg01             192.168.0.1/24                    u/u  VPN-to-Branch"']}) | ||||||
|  | 2023-06-07 10:20:38,307 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: register stdout commands] ************************************************************************************************** | ||||||
|  | 2023-06-07 10:20:38,346 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:20:38,351 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:20:38,358 p=80164 u=rob n=ansible | skipping: [central] => (item={'name': 'show_interfaces_wireguard', 'command': 'show interfaces wireguard'})  | ||||||
|  | 2023-06-07 10:20:38,360 p=80164 u=rob n=ansible | skipping: [branch] => (item={'name': 'show_interfaces_wireguard', 'command': 'show interfaces wireguard'})  | ||||||
|  | 2023-06-07 10:20:38,361 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:20:38,363 p=80164 u=rob n=ansible | skipping: [central] => (item={'name': 'ping_branch_pc', 'command': 'ping 10.0.2.100 count 4'})  | ||||||
|  | 2023-06-07 10:20:38,365 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:20:38,369 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Set variables] ************************************************************************************************************* | ||||||
|  | 2023-06-07 10:20:38,390 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:20:38,393 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:20:38,398 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:20:38,403 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:20:38,408 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: make sure output dir exist] ************************************************************************************************ | ||||||
|  | 2023-06-07 10:20:38,433 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:20:38,435 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:20:38,441 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:20:38,672 p=80164 u=rob n=ansible | ok: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:20:38,677 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: make sure output include dir exist] **************************************************************************************** | ||||||
|  | 2023-06-07 10:20:38,701 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:20:38,704 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:20:38,709 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:20:38,943 p=80164 u=rob n=ansible | ok: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:20:38,945 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Get timestamp from the system] ********************************************************************************************* | ||||||
|  | 2023-06-07 10:20:38,966 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:20:38,967 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:20:38,972 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:20:39,149 p=80164 u=rob n=ansible | changed: [eveng] | ||||||
|  | 2023-06-07 10:20:39,155 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: Set variables] ************************************************************************************************************* | ||||||
|  | 2023-06-07 10:20:39,180 p=80164 u=rob n=ansible | ok: [eveng] | ||||||
|  | 2023-06-07 10:20:39,183 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:20:39,183 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:20:39,189 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:20:39,193 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: generate lab rst file] ***************************************************************************************************** | ||||||
|  | 2023-06-07 10:20:39,218 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:20:39,221 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:20:39,226 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:20:39,717 p=80164 u=rob n=ansible | changed: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:20:39,722 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: find all *.conf files in Lab] ********************************************************************************************** | ||||||
|  | 2023-06-07 10:20:39,748 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:20:39,748 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:20:39,756 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:20:40,044 p=80164 u=rob n=ansible | ok: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:20:40,050 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: copy all *.conf files] ***************************************************************************************************** | ||||||
|  | 2023-06-07 10:20:40,075 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:20:40,077 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:20:40,084 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:20:40,570 p=80164 u=rob n=ansible | changed: [eveng -> localhost] => (item={'path': 'labs/Wireguard/branch.conf', 'mode': '0644', 'isdir': False, 'ischr': False, 'isblk': False, 'isreg': True, 'isfifo': False, 'islnk': False, 'issock': False, 'uid': 501, 'gid': 20, 'size': 694, 'inode': 11035494, 'dev': 16777229, 'nlink': 1, 'atime': 1686123270.5077152, 'mtime': 1686123269.0257325, 'ctime': 1686123269.0257325, 'gr_name': 'staff', 'pw_name': 'rob', 'wusr': True, 'rusr': True, 'xusr': False, 'wgrp': False, 'rgrp': True, 'xgrp': False, 'woth': False, 'roth': True, 'xoth': False, 'isuid': False, 'isgid': False}) | ||||||
|  | 2023-06-07 10:20:41,056 p=80164 u=rob n=ansible | changed: [eveng -> localhost] => (item={'path': 'labs/Wireguard/central.conf', 'mode': '0644', 'isdir': False, 'ischr': False, 'isblk': False, 'isreg': True, 'isfifo': False, 'islnk': False, 'issock': False, 'uid': 501, 'gid': 20, 'size': 687, 'inode': 11035495, 'dev': 16777229, 'nlink': 1, 'atime': 1686123270.4820926, 'mtime': 1686123269.0258439, 'ctime': 1686123269.0258439, 'gr_name': 'staff', 'pw_name': 'rob', 'wusr': True, 'rusr': True, 'xusr': False, 'wgrp': False, 'rgrp': True, 'xgrp': False, 'woth': False, 'roth': True, 'xoth': False, 'isuid': False, 'isgid': False}) | ||||||
|  | 2023-06-07 10:20:41,062 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: find all *.config files in Lab] ******************************************************************************************** | ||||||
|  | 2023-06-07 10:20:41,085 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:20:41,087 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:20:41,093 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:20:41,330 p=80164 u=rob n=ansible | ok: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:20:41,334 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: copy all *.config files] *************************************************************************************************** | ||||||
|  | 2023-06-07 10:20:41,352 p=80164 u=rob n=ansible | skipping: [eveng] | ||||||
|  | 2023-06-07 10:20:41,364 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:20:41,364 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:20:41,372 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:20:41,377 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: find all *.png files in Lab] *********************************************************************************************** | ||||||
|  | 2023-06-07 10:20:41,400 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:20:41,402 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:20:41,408 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:20:41,643 p=80164 u=rob n=ansible | ok: [eveng -> localhost] | ||||||
|  | 2023-06-07 10:20:41,649 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: copy all *.png files] ****************************************************************************************************** | ||||||
|  | 2023-06-07 10:20:41,674 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:20:41,676 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:20:41,681 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
|  | 2023-06-07 10:20:42,147 p=80164 u=rob n=ansible | ok: [eveng -> localhost] => (item={'path': 'labs/Wireguard/topology.png', 'mode': '0644', 'isdir': False, 'ischr': False, 'isblk': False, 'isreg': True, 'isfifo': False, 'islnk': False, 'issock': False, 'uid': 501, 'gid': 20, 'size': 158227, 'inode': 362576, 'dev': 16777229, 'nlink': 1, 'atime': 1676403697.132659, 'mtime': 1648155110.0, 'ctime': 1675368464.81138, 'gr_name': 'staff', 'pw_name': 'rob', 'wusr': True, 'rusr': True, 'xusr': False, 'wgrp': False, 'rgrp': True, 'xgrp': False, 'woth': False, 'roth': True, 'xoth': False, 'isuid': False, 'isgid': False}) | ||||||
|  | 2023-06-07 10:20:42,153 p=80164 u=rob n=ansible | TASK [eve-ng-lab-test : Wireguard: copy ansible log files] **************************************************************************************************** | ||||||
|  | 2023-06-07 10:20:42,176 p=80164 u=rob n=ansible | skipping: [vyos-oobm] | ||||||
|  | 2023-06-07 10:20:42,179 p=80164 u=rob n=ansible | skipping: [central] | ||||||
|  | 2023-06-07 10:20:42,184 p=80164 u=rob n=ansible | skipping: [branch] | ||||||
							
								
								
									
										113
									
								
								docs/configexamples/autotest/Wireguard/Wireguard.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,113 @@ | |||||||
|  | ######### | ||||||
|  | Wireguard | ||||||
|  | ######### | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | | Testdate: 2023-06-07 | ||||||
|  | | Version: 1.3.3 | ||||||
|  | | Upgrade Version: 1.4-rolling-202306070317 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This simple structure show how to connect two offices. One remote branch and the | ||||||
|  | central office. | ||||||
|  | 
 | ||||||
|  | ******** | ||||||
|  | Topology | ||||||
|  | ******** | ||||||
|  | 
 | ||||||
|  | The topology have a central and a branch VyOS router and one client, to | ||||||
|  | test, in each site. | ||||||
|  | 
 | ||||||
|  | .. image:: _include/topology.png | ||||||
|  |   :alt: Ansible Example topology image | ||||||
|  | 
 | ||||||
|  | ************* | ||||||
|  | Configuration | ||||||
|  | ************* | ||||||
|  | 
 | ||||||
|  | Set the local subnet on eth2 and the public ip address eth1 on each site. | ||||||
|  | 
 | ||||||
|  | Central | ||||||
|  | 
 | ||||||
|  | .. literalinclude:: _include/central.conf | ||||||
|  |    :language: none | ||||||
|  |    :lines: 1-2 | ||||||
|  | 
 | ||||||
|  | Branch | ||||||
|  | 
 | ||||||
|  | .. literalinclude:: _include/branch.conf | ||||||
|  |    :language: none | ||||||
|  |    :lines: 1-2 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Next thing to do, is to create a wireguard keypair on each side. | ||||||
|  | After this, the public key can be displayed, to save for later. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    vyos@central:~$ generate wireguard default-keypair | ||||||
|  |    vyos@central:~$ show wireguard keypairs pubkey default | ||||||
|  |    s35+/Ocmnss0F+4fHP7pgF5oBf6MSN2VHUWSVNtkeTc= | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | After you have each public key. The wireguard interfaces can be setup. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Central | ||||||
|  | 
 | ||||||
|  | .. literalinclude:: _include/central.conf | ||||||
|  |    :language: none | ||||||
|  |    :lines: 4-11 | ||||||
|  | 
 | ||||||
|  | Branch | ||||||
|  | 
 | ||||||
|  | .. literalinclude:: _include/branch.conf | ||||||
|  |    :language: none | ||||||
|  |    :lines: 4-11 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | To reach the network, a route must be set on each VyOS host. | ||||||
|  | In this structure, a static interface route will fit the requirements. | ||||||
|  | 
 | ||||||
|  | Central | ||||||
|  | 
 | ||||||
|  | .. literalinclude:: _include/central.conf | ||||||
|  |    :language: none | ||||||
|  |    :lines: 13 | ||||||
|  | 
 | ||||||
|  | Branch | ||||||
|  | 
 | ||||||
|  | .. literalinclude:: _include/branch.conf | ||||||
|  |    :language: none | ||||||
|  |    :lines: 13 | ||||||
|  | 
 | ||||||
|  | ********************* | ||||||
|  | Testing and debugging | ||||||
|  | ********************* | ||||||
|  | 
 | ||||||
|  | After all is done and commit, let's take a look if the Wireguard interface is | ||||||
|  | up and running. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    vyos@central:~$ show interfaces wireguard | ||||||
|  |    Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down | ||||||
|  |    Interface        IP Address                        S/L  Description | ||||||
|  |    ---------        ----------                        ---  ----------- | ||||||
|  |    wg01             192.168.0.1/24                    u/u  VPN-to-Branch | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | And ping the Branch PC from your central router to check the response. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |    vyos@central:~$ ping 10.0.2.100 count 4 | ||||||
|  |    PING 10.0.2.100 (10.0.2.100) 56(84) bytes of data. | ||||||
|  |    64 bytes from 10.0.2.100: icmp_seq=1 ttl=63 time=0.502 ms | ||||||
|  |    64 bytes from 10.0.2.100: icmp_seq=2 ttl=63 time=0.937 ms | ||||||
|  |    64 bytes from 10.0.2.100: icmp_seq=3 ttl=63 time=0.867 ms | ||||||
|  |    64 bytes from 10.0.2.100: icmp_seq=4 ttl=63 time=1.15 ms | ||||||
|  |     | ||||||
|  |    --- 10.0.2.100 ping statistics --- | ||||||
|  |    4 packets transmitted, 4 received, 0% packet loss, time 35ms | ||||||
|  |    rtt min/avg/max/mdev = 0.502/0.865/1.154/0.234 ms | ||||||
							
								
								
									
										13
									
								
								docs/configexamples/autotest/Wireguard/_include/branch.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,13 @@ | |||||||
|  | set interface ethernet eth2 address 10.0.2.254/24 | ||||||
|  | set interface ethernet eth1 address 198.51.100.2/24 | ||||||
|  | 
 | ||||||
|  | set interfaces wireguard wg01 address 192.168.0.2/24 | ||||||
|  | set interfaces wireguard wg01 description 'VPN-to-central' | ||||||
|  | set interfaces wireguard wg01 peer central allowed-ips 10.0.1.0/24 | ||||||
|  | set interfaces wireguard wg01 peer central allowed-ips 192.168.0.0/24 | ||||||
|  | set interfaces wireguard wg01 peer central address 198.51.100.1 | ||||||
|  | set interfaces wireguard wg01 peer central port 51820 | ||||||
|  | set interfaces wireguard wg01 peer central pubkey "s35+/Ocmnss0F+4fHP7pgF5oBf6MSN2VHUWSVNtkeTc=" | ||||||
|  | set interfaces wireguard wg01 port 51820 | ||||||
|  | 
 | ||||||
|  | set protocols static interface-route 10.0.1.0/24 next-hop-interface wg01 | ||||||
							
								
								
									
										13
									
								
								docs/configexamples/autotest/Wireguard/_include/central.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,13 @@ | |||||||
|  | set interface ethernet eth2 address 10.0.1.254/24 | ||||||
|  | set interface ethernet eth1 address 198.51.100.1/24 | ||||||
|  | 
 | ||||||
|  | set interfaces wireguard wg01 address 192.168.0.1/24 | ||||||
|  | set interfaces wireguard wg01 description 'VPN-to-Branch' | ||||||
|  | set interfaces wireguard wg01 peer branch allowed-ips 10.0.2.0/24 | ||||||
|  | set interfaces wireguard wg01 peer branch allowed-ips 192.168.0.0/24 | ||||||
|  | set interfaces wireguard wg01 peer branch address 198.51.100.2 | ||||||
|  | set interfaces wireguard wg01 peer branch port 51820 | ||||||
|  | set interfaces wireguard wg01 peer branch pubkey "WVQtVWxbz3f9Qv2q8t13+PL0MK+axg01hMuyZdqligw=" | ||||||
|  | set interfaces wireguard wg01 port 51820 | ||||||
|  | 
 | ||||||
|  | set protocols static interface-route 10.0.2.0/24 next-hop-interface wg01 | ||||||
							
								
								
									
										
											BIN
										
									
								
								docs/configexamples/autotest/Wireguard/_include/topology.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 154 KiB | 
| @ -0,0 +1 @@ | |||||||
|  | set interfaces ethernet eth1 ipv6 address autoconf | ||||||
							
								
								
									
										
											BIN
										
									
								
								docs/configexamples/autotest/tunnelbroker/_include/topology.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 34 KiB | 
| @ -0,0 +1,2 @@ | |||||||
|  | set interfaces ethernet eth1 address '10.0.10.254/24' | ||||||
|  | set interfaces ethernet eth2 address '10.0.20.254/24' | ||||||
| @ -0,0 +1 @@ | |||||||
|  | set interfaces ethernet eth1 address dhcp | ||||||
| @ -0,0 +1,13 @@ | |||||||
|  | set interfaces tunnel tun0 address '2001:470:6c:779::2/64' #Tunnelbroker Client IPv6 Address | ||||||
|  | set interfaces tunnel tun0 description 'HE.NET IPv6 Tunnel' | ||||||
|  | set interfaces tunnel tun0 encapsulation 'sit' | ||||||
|  | set interfaces tunnel tun0 remote '216.66.86.114' #Tunnelbroker Server IPv4 Address | ||||||
|  | set interfaces tunnel tun0 source-address '172.29.129.60' # Tunnelbroker Client IPv4 Address or if there is NAT the current WAN interface address | ||||||
|  | 
 | ||||||
|  | set protocols static interface-route6 ::/0 next-hop-interface tun0 | ||||||
|  | 
 | ||||||
|  | set interface ethernet eth2 address '2001:470:6d:778::1/64' # Tunnelbroker Routed /64 prefix | ||||||
|  | set service router-advert interface eth2 name-server '2001:470:20::2' | ||||||
|  | set service router-advert interface eth2 prefix 2001:470:6d:778::/64 # Tunnelbroker Routed /64 prefix | ||||||
|  | 
 | ||||||
|  | set system name-server 2001:470:20::2 #Tunnelbroker DNS Server | ||||||