기업이 새로운 수익원을 개척하거나 경쟁력을 유지하기 위해 디지털 혁신 전략을 추진할 때 가장 중요한 동인 중 하나는 속도에 대한 필요성입니다. 즉, 신속하게 훌륭한 고객 경험을 제공할 수 있는 능력이 필요합니다. 조직들이 DevOps 방법론을 채택함에 따라 현재의 네트워킹 아키텍처가 제한 요소라는 점을 깨닫게 되었습니다. 기존의 네트워크 아키텍처는 정적이고, 인간의 실수에 취약하며, 관리에 상당한 운영 투자가 필요합니다. 애플리케이션 배포를 지원하는 네트워크 인프라뿐만 아니라 DNS 및 로드 밸런싱과 같은 네트워크 서비스도 확장된 CI/CD(Continuous Integration/Development) 파이프라인의 일부로 자동화하는 것이 필수적입니다.
네트워크 자동화를 통해 조직은 민첩성을 높일 수 있으며, 그 결과 보다 역동적이고 안정적인 네트워크, 향상된 운영 효율성, 향상된 배포 시간, 보다 일관된 애플리케이션 배포가 가능해집니다.
프로그래밍 가능성은 운영 자동화를 실현하는 데 중요한 요소입니다. F5는 수년에 걸쳐 이 개념을 수용해 왔으며 모든 F5® BIG-IP® 애플리케이션 전송 컨트롤러(ADC)에서 프로그래밍 기능을 지원하여 애플리케이션 네트워크 서비스 패브릭에서 민첩성과 확장성을 구현했습니다. BIG-IP ADC의 물리적 버전과 가상 버전은 모두 유연하고 프로그래밍 가능한 관리, 제어 및 데이터 플레인을 제공합니다.
네트워크 프로그래밍에 대한 포괄적인 접근 방식은 운영팀이 운영 및 비즈니스 이벤트나 기회에 필요에 따라 대응할 수 있도록 돕습니다. 네트워크 프로그래밍 기능을 제공하는 F5 제품 포트폴리오는 기업이 효율적으로 자동화하고 조율할 수 있도록 지원합니다.
F5와 Puppet은 포괄적인 솔루션을 통해 지속적인 통합 및 지속적인 배포(CI/CD)를 지원하는 민첩성에 대한 현대 비즈니스의 요구를 해결하기 위해 협력했습니다. Puppet은 상업적으로 지원되는 구성 관리 도구인 Puppet Enterprise를 제공합니다. 이 도구는 컴퓨팅, 네트워크 및 스토리지 리소스 관리를 자동화하기 위한 통합된 소프트웨어 정의 방식을 제공하며 조직이 보다 원활하게 애플리케이션을 제공할 수 있도록 지원합니다.
Puppet Enterprise는 선언적 모델 기반 IT 자동화 방식을 통해 간단하고 반복적인 작업을 자동화하는 것부터 대규모 퍼블릭, 프라이빗, 하이브리드 클라우드를 배포하는 것까지 다양한 기능을 수행할 수 있습니다. 이러한 클라우드 환경에서 구성 변경 사항을 모델링, 테스트한 다음 배포하는 기능은 인프라 리소스를 효율적으로 사용할 수 있도록 보장합니다. 모듈을 통한 Puppet의 확장성을 통해 조직은 기존 프레임워크를 기반으로 BIG-IP 장치를 지원할 수 있습니다.
일반적인 Puppet 인프라에는 각 관리 시스템에 소프트웨어 에이전트가 설치되어 있습니다. 이러한 에이전트는 주기적으로 시스템에 대한 '사실'이라고 불리는 여러 정보를 Puppet 마스터 서버로 전송합니다. Puppet 마스터는 Puppet 코드로 구성된 Puppet 프로그램인 매니페스트와 함께 수신된 사실을 사용하여 최종 구성을 정의하는 카탈로그를 컴파일한 다음 카탈로그를 에이전트에게 다시 보냅니다. 그런 다음 에이전트는 카탈로그에 정의된 대로 시스템 상태를 적용할 수 있습니다.
소프트웨어 에이전트가 노드에서 직접 실행되는 서버 케이스와 달리, Puppet 인프라를 사용하면 BIG-IP 장치의 에이전트를 실행하는 프록시를 설정할 수 있습니다. 이제 BIG-IP 장치를 Puppet으로 관리하여 솔루션이 제공하는 이점을 누릴 수 있습니다. Puppet 에이전트는 Puppet 마스터와 별도의 서버에 상주할 수도 있고, 동일한 서버에서 실행할 수도 있습니다.
퍼핏 언어 파일은 매니페스트라고 하며, .pp 파일 확장자로 이름이 지정됩니다. Puppet 언어의 핵심은 리소스를 선언하는 것입니다. 언어의 다른 모든 부분은 리소스가 선언되는 방식에 유연성과 편의성을 더하기 위해 존재합니다. Puppet 마스터는 항상 현재 노드의 환경에서 설정된 기본 매니페스트를 사용하며, 이를 통해 선언적 방식으로 리소스를 설명할 수 있습니다.
F5와 Puppet 조인트 솔루션에 대한 데이터 흐름은 그림 1에 표시되어 있습니다.
이 공동 구현에 중요한 두 가지 기능은 iControl API와 Puppet Network Device Management입니다. F5 iControl API는 Puppet 프록시와 F5 BIG-IP 장치 간 통신을 제공하고, Puppet Network Device Management는 조직이 네트워크 장치를 구성하는 데 도움을 줍니다. Puppet Network Device와 F5 iControl API를 사용하면 Puppet F5 모듈을 배포하고 Puppet 관리를 BIG-IP 디바이스에 적용할 수 있습니다. Puppet F5 모듈은 가상 서버 배포 및 관리, 풀 및 풀 멤버 구성 및 관리를 포함하여 BIG-IP 객체를 관리하기 위한 리소스를 제공합니다. Puppet은 F5 모듈을 사용하여 BIG-IP 장치에 정의된 리소스를 찾고 F5 모듈에 저장된 모든 사용자 정의 클래스나 정의된 유형을 자동으로 로드합니다.
이 F5 및 Puppet 조인트 솔루션은 다음과 같은 데 도움이 됩니다.
Puppet F5 모듈은 일반적인 애플리케이션 배포에 필요한 BIG-IP 객체(서버 노드, 풀, 가상 서버 등)를 생성하고 구성할 수 있습니다. 여러 대의 BIG-IP 장치를 배포하는 경우, 조직에서는 Puppet 모듈을 사용하여 장치 라이선싱, DNS 및 NTP 설정, 내부 및 외부 VLAN, 셀프 IP, 경로 도메인 등 모든 초기 BIG-IP 온보딩 작업을 자동화할 수 있습니다.
BIG-IP 장치에서 일반적인 HTTP 애플리케이션을 구성하려면 노드, 모니터, 프로필을 설정하고, 가상 IP 주소를 배포하는 등의 작업이 필요합니다. 단일 BIG-IP 장비에서 자동화를 적용하지 않으면 쉽게 관리할 수 있는 것처럼 보일 수 있지만, 여러 데이터 센터에 걸쳐 여러 F5 장비를 구성하여 대규모 엔터프라이즈 애플리케이션을 제공하는 것은 복잡하고 시간이 많이 걸리며 오류가 발생하기 쉽습니다. 선언적이고 모델 기반의 Puppet 매니페스트를 사용하면 조직에서는 데이터 센터에서 여러 BIG-IP 장치에 대한 애플리케이션 배포를 관리하고 자동화할 수 있습니다.
배포를 시작하려면 Puppet 마스터를 설치하고 Puppet 에이전트를 실행할 수 있는 프록시 시스템을 만듭니다. 또한, 프록시 호스트(Puppet 에이전트)의 Puppet Ruby 환경에 iControl gem과 Faraday gem을 포함한 모든 종속성을 설치해야 합니다. 배포는 그림 2에 나와 있습니다.
F5 모듈을 사용하려면 Puppet 프록시의 Puppet 구성 디렉토리( /etc/puppet 또는 /etc/puppetlabs/puppet )에 device.conf 파일을 만들어야 합니다.
[bigip1] 유형 f5 url https://admin:admin@10.192.74.111
위의 예에서, 관리자:admin@10.192.74.111 F5 장치에 대한 Puppet의 로그인을 말합니다: <USERNAME>:<PASSWORD>@<BIGIP의 IP 주소>.
다음으로, site.pp, <devicecertname>.pp 노드 매니페스트 또는 일부 profiles::<profile_name> 매니페스트 파일에 있는 관련 클래스 문장이나 노드 선언에 구성을 입력합니다. 다음은 BIG-IP 플랫폼에서 HTTP 애플리케이션을 구성하기 위한 샘플 Puppet 매니페스트 파일(site.pp)입니다.
노드 bigip1 { f5_node { '/Common/web_server_1': 보장 => '현재', 주소 => '10.1.20.11', 설명 => '웹 서버 노드 1', 가용성_요구 사항 => '모두', 상태_모니터 => ['/Common/icmp'], }-> f5_node { '/Common/web_server_2': 보장 => '현재', 주소 => '10.1.20.12', 설명 => '웹 서버 노드 2', 가용성_요구 사항 => '모두', 상태_모니터 => ['/Common/icmp'], }-> f5_node { '/Common/web_server_3': 보장 => '현재', 주소 => '10.1.20.13', 설명 => '웹 서버 노드 3', 가용성_요구사항 => '모두', 건강_모니터 => ['/공통/icmp'], }-> f5_pool { '/공통/웹_풀': 보장 => '현재', 멤버 => [ { 이름 => '/공통/웹_서버_1', 포트 => '80', }, { 이름 => '/공통/웹_서버_2', 포트 => '80', }, { 이름 => '/공통/웹_서버_3', 포트 => '80', }, ], 가용성_요구사항 => '모두', 건강_모니터 => ['/공통/http_head_f5'], }-> f5_virtualserver { '/공통/http_vs': 보장 => '현재', 공급자 => '표준', 기본_풀 => '/공통/웹_풀', 목적지 주소 => '10.1.10.240', 목적지 마스크 => '255.255.255.255', http_profile => '/Common/http', 서비스 포트 => '80', 프로토콜 => 'tcp', 소스 => '0.0.0.0/0', 소스 주소 변환 => '자동 맵' } }
이 예제에는 세 가지 작업이 있습니다.
puppet device (Puppet Network Device 명령어)를 실행하기 전에는 BIG-IP 장치에 가상 서버, 풀 또는 노드가 구성되어 있지 않습니다. puppet device -v --user=root 명령을 실행하면 장치 프록시 노드가 인증서를 생성하고 분류를 F5 장치에 적용합니다.
아래에 표시된 대로 모든 작업이 실패 없이 성공적으로 완료되었습니다.
$ sudo puppet device -v --user=root –trace 정보: https://10.192.74.111:443에서 bigip1에 구성을 적용하는 중 정보: 플러그인 팩트 검색 정보: 플러그인 검색 정보: bigip1에 대한 캐싱 카탈로그 정보: 구성 버전 '1498175426' 적용 알림: /Stage[main]/Main/Node[bigip1]/F5_node[/Common/web_server_1]/ensure: created 알림: /Stage[main]/Main/Node[bigip1]/F5_node[/Common/web_server_2]/ensure: created 알림: /Stage[main]/Main/Node[bigip1]/F5_node[/Common/web_server_3]/ensure: created 알림: /Stage[main]/Main/Node[bigip1]/F5_pool[/Common/web_pool]/ensure: created 알림: /Stage[main]/Main/Node[bigip1]/F5_virtualserver[/Common/http_vs]/ensure: created 정보: 노드[bigip1]: Node[bigip1]에서 모든 이벤트 일정 취소 알림: 0.50초 안에 카탈로그 적용
Puppet은 이제 완전히 구성된 새로운 가상 서버를 만들었습니다(그림 3). 이 서버는 새로 생성된 풀(그림 4)에서 HTTP 애플리케이션의 부하를 분산합니다. 풀에는 새로 생성된 웹 서버 3개가 포함되어 있습니다(그림 5).
모든 Puppet F5 모듈은 멱등적입니다. 즉, 노드 상태가 구성된 상태나 원하는 상태와 일치하지 않는 경우에만 작업이 실행됩니다. 즉, 동일한 매니페스트를 다시 실행하면 Puppet은 이러한 객체를 재구성하지 않습니다.
정보: https://10.192.74.111:443에서 bigip1에 구성을 적용하기 시작 정보: 플러그인 팩트 검색 정보: 플러그인 검색 정보: bigip1에 대한 캐싱 카탈로그 정보: 구성 버전 '1498522983' 적용 알림: 1.51초 만에 카탈로그 적용
자동화는 DevOps와 CI/CD의 핵심 구성 요소이며, 종종 구성 관리로 시작됩니다. F5와 Puppet 공동 솔루션을 사용하면 운영팀이 전체 애플리케이션 인프라 스택의 구성을 배포, 자동화 및 관리할 수 있습니다. 이를 통해 애플리케이션 개발자는 인프라 리소스를 탄력적으로 확장하거나 축소하고, 애플리케이션 테스트를 자동화하고, 애플리케이션 개발 기간을 단축할 수 있습니다. 그 결과, 조직은 전례 없는 수준의 민첩성과 확장성을 달성할 수 있습니다.
F5와 Puppet 조인트 솔루션이 귀사의 비즈니스에 어떻게 도움이 될 수 있는지 자세히 알아보려면 forge.puppet.com/f5/f5를 방문하세요.