SlideShare a Scribd company logo
Upgrading from CFEngine2 to
CFEngine 3
Agenda
• The Benefits of Upgrading
• What’s New in CFEngine 3
• Promise Theory and How It Drives CFEngine 3
• Planning your Upgrade
• Policy Conversion Methods
• System Upgrade Methods

• Q&A
Why Upgrade?
•

Simplifies and extends CFEngine 2

•

More consistent in syntax and behavior

•

Does not require "under the hood" programming to
extend the language – up to 10x less code

•

Does not hard-code configuration details

•

Enables greater agility; 5 minute update default

•

Provides tools for debugging and testing

•

Adds native support and integration
What’s new in CFEngine 3?
• Native Support and Integration
• Standard Integration
• Package Management
• Enhanced Service Management

• Database
• Virtualization

• Enterprise Extensions
• Windows support

• LDAP and Active Directory
• Design Center
• GUI Reporting
What’s New in CFEngine 3?
• Language Enhancements
• Bodies and Bundles
body common control
{
bundlesequence => { "test" };
}
bundle agent test
{
reports:
cfengine_3::
"Hello world!";
}
What’s New in CFEngine 3?
• Language Enhancements
• Standard Library
/var/cfengine/inputs/cfengine_stdlib.cf

• Arrays and Lists
• Pattern matching and Iteration
• Comments and Handles
CFEngine Enterprise - Mission Portal GUI
• Features
• Auditing and Compliance
• Monitoring
• Reporting
• REST API
• Design Center
• Inventory management
Promise Theory and CFEngine 3
• Promise Theory
Voluntary cooperation between individual, autonomous
actors or agents who publish their intentions to one
another in the form of promises
-- Mark Burgess
Promise Theory - Basic Concepts
• Promise Theory: Applied
• Promises are fundamental statements
Set perms on /etc/passwd
Use latest Apache Package

• A policy is a collection of promises

• Desired state is maintained through policies
• Updates are pulled autonomously
Notable Differences – CFEngine 3
• Connections
• Trust relationships are established by design
• Bootstrapping – The process of binding a client to the
hub or policy server
• Key exchange – managed by CF3

• Policy Organization
• Policies and bundle references are located on all
bootstrapped systems
• Managed by the promises.cf
CFEngine 2 Upgrade Preparation
CFEngine 2 Upgrade Preparation
• Identify peer systems
• Consult documentation

• From Policy Server command line:
cfshow -s
IP + 192.168.1.101 192.168.1.101 [Tue Jan 23 16:13] not seen for (6.42) hrs
IP - 192.168.1.101 192.168.1.101 [Tue Jan 23 16:13] not seen for (6.42) hrs

cat <path>/cfrun.hosts

• When all else fails, scripting is your friend
CFEngine 2 Upgrade Preparation
• Catalog Existing Policies
• Where are they?
• Source control?
• Local inputs?
• Local hosts?
CFEngine 2 Policy Conversion
• Methods
• Functional translation
• What problem does it solve?

• Direct translation
• Line for line

• Be flexible!

• Let the policy be your guide
CFEngine 2 Policy Conversion
• Functional Translation Method
• Holistic viewpoint – the Big Picture approach

• Opportunity for improvement
• Recommended conversion strategy
CFEngine 2 Policy Conversion
• Direct Translation Method
• Direct language translation
• Translation guide:
http://cfengine.com/manuals/cf3-upgrade.html

• Time consuming

• Missed opportunities
CFEngine 2 Policy Conversion: CF2 Processes Policy
processes:
"inetd"
signal=hup
"bootp"
signal=kill
exclude=rpc.bootparamd
"cfservd"
restart "/usr/local/sbin/cfservd"
useshell=false
# matches=>6 warn number of matches is greater than or equal to 6
# matches=1 warn if not exactly 1 matching process
# matches=<2 warn if there are less than or equal to 2 matching processes
CFEngine 2 Direct Conversion: CF3 Processes Policy
processes:
"inetd"
signals => { "hup" };
"bootp"
signals => { "kill" },
process_select => exclude_procs(".*rpc.bootparamd.*");
"cf-serverd"
restart_class => "start_cfserverd";
# process_count => check_range(cfserv,6,inf); warn number of matches is >= equal to 6
# process_count => check_range(cfserv,1,1); warn if not exactly 1 matching process
# process_count => check_range(cfserv,0,2); warn if there are =< to 2 matching processes
commands:
start_cfserverd::
"/usr/local/sbin/cf-serverd";
reports:
cfserv_out_of_range::
"cf-serverd is out of control!!";
CFEngine 2 Functional Conversion: CF3 Processes Policy
vars:
"daemons" slist => { "cf-monitord", "cf-serverd", "cf-execd" };
processes:
"named" restart_class => "restart_named";
"$(daemons)" restart_class => canonify("start_$(component)");
commands:

"/bin/echo /var/cfengine/bin/$(component)"
ifvarclass => canonify("start_$(component)");
restart_named::
"/local/sbin/named -u dns"
action => inform;
CFEngine 2 Functional Conversion: CF2 File Ops Policy
This CFEngine 2 Policy: cf2_file_op.cf
control:
domain = ( mydomain.com )
serverip = ( 172.16.100.129 ) #server ip address
master = ( /var/cfengine/inputs )
actionsequence = ( copy files links editfiles )
copy:
/master/cfengine/inputs server=$(serverip)
dest=$(master)
recurse=inf
trustkey=on
files:
any::
/tmp/cfengine_is_good mode=0644 owner=root group=root action=touch

links:
any::
/tmp/how_is_cfengine -> /tmp/cfengine_is_good
editfiles:
cfengine_2::
{
/etc/motd AppendIfNoSuchLine “Running CFEngine"
}
CFEngine 2 Functional Conversion: CF3 File Ops Bundle
Converts to this CFEngine 3 Bundle:
bundle agent old_cfagent
{
files:
"/tmp/cfengine_is_good"
perms => mog("644","root","root");
"/tmp/how_is_cfengine"
link_from => ln_s("/tmp/cfengine_is_good");
cfengine_3::
"/etc/motd"
edit_line => append_if_no_lines(“Running CFEngine");
}
CFEngine 2 Policy Conversion
• Tips and Tricks
• Install CFEngine 3 in a test environment
• Safety first

• Start small
• How would you eat an elephant?

• Focus on the similarities
• The language may be different, but the core concepts remain
CFEngine 2 Policy Conversion
• Tips and Tricks
• Convert CF2 policies to bundles; not standalone files
• CFEngine 3 is a different animal
• Client connection and control activities: Handled
• Part of the initial bootstrap process
• The promises.cf file controls automated activity
• Bundles referenced in the bundlesequence stanza
• Input bundle files are referenced in the inputs stanza
CFEngine Conversion Tool
•

Learning tool or killer utility?
• Learning tool
• Requires cleanup; but helpful in learning the language

• Location: https://github.com/cfengine/cf22cf3
• Zip file containing code:
https://github.com/cfengine/cf22cf3/archive/master.zip
• May also clone via HTTPS, SSH, or Subversion.
CFEngine Conversion Tool - Setup
• Pre-requisite and Download Instructions
• This example uses the CentOS 5 distribution
• Pre-requisite work:
yum groupinstall "Development tools"
yum install db4-devel
yum install openssl-devel

• Download from GIT:
https://github.com/cfengine/cf22cf3|
• Download cf22cf3-master.zip, or if you have a
GIT/SVN repo set up locally, clone it
CFEngine Conversion Tool - Setup
• Manual Compilation
• Create a compilation area on a local system
mkdir /sandbox

• Copy zip to compilation area and unpack
cp cf22cf3-master.zip /sandbox
cd /sandbox
unzip cf22cf3-master.zip
cd cf22cf3-master
chmod 755 configure
CFEngine Conversion Tool - Setup
• Compilation instructions
• Compile
./configure
make
make install

• Binary Directory:

/usr/local/sbin

• Examples Directory:
Binary:

/usr/local/share/cf23convert
/usr/local/sbin/cfconvert
CFEngine Conversion Tool - Usage
• Usage
Cfengine Conversion Utility
1.0.0
Free Software Foundation 1994Donated by Mark Burgess, Oslo University College, Norway
Options:
--file
--variables
--server
--bundle

(-f)
(-v)
(-s)
(-b)

Debug levels: 1=parsing, 2=running, 3=summary, 4=expression eval
Bug reports to bug-cfengine@cfengine.org
General help to help-cfengine@cfengine.org
Info & fixes at http://www.cfengine.org
CFEngine Conversion Tool - Example
• Convert CFE2 policy file to a CFE3 bundle :
• Create a CFEngine 2 policy file in /tmp
( We’ll use the policy example in slide 21: cf2_file_op.cf )
• Convert to a bundle and pipe the bundle to stdout
cfconvert -f /tmp/cf2_file_op.cf

-b

• Convert to a bundle and pipe to a file
( Save the converted file as cf3_file_op.cf )
cfconvert -f /tmp/cf2_file_op.cf -b > /tmp/cf3_file_op.cf
CFEngine 2 Upgrade Plan
• In Place Upgrade Overview
• CF2 and CF3 designed to be interoperable
• Replace CF2 Policies at your pace
CFEngine Upgrade Plan
• Upgrade Notes:
• Replace cfexecd with CFEngine 3's cf-execd
• Access control remains untouched
• Runs cf-agent

• Sample inputs files contain integration promises
• Launched automatically
• Changes crontab
CFEngine Upgrade Plan
•

In Place Upgrade Steps
•

Backup CFEngine 2 policies and inputs repo

•

Install the CFEngine 3 software on a local host
rpm -ivh cfengine-community-3.2.1-.el5.x86_64.rpm

•

Copy newly installed /var/cfengine/inputs files to your CF2 master

update repository
•

Remove any rules to reinstall CFEngine 2 or add cfexecd or cfagent
to crontabs

•

Remove cfexecd from start up processes
chkconfig cfexecd off
chkconfig --del cfexecd
CFEngine Upgrade Plan
•

In Place Upgrade Steps
•

Change directory to the inputs directory
cd /var/cfengine/inputs

•

Edit the update.cf file to point to your CF2 master update repository

•

Set the email options for the executor in promises.cf.

•

As root, run:
cf-agent --bootstrap

•

If all went well, you are now running CFEngine 3. To bootstrap to a

policy server, run:
cf-agent --bootstrap <policy server IP>
CFEngine Upgrade Plan
•

In Place Upgrade Steps
•

Remove all rules or policies that are capable of activating

CFEngine 2 components
•

Convert cfservd.conf into a server bundle

•

Place a reference to this bundle in promises.cf

•

Remove all rules to run cfservd

•

Replace them with rules to run cf-serverd

•

Add converted CFEngine 2 policies or create new

CFEngine 3 policies
CFEngine 2 Upgrade Plan
• Replacement Model
• CFEngine 3 installed on separate server
• Converted hosts bootstrap to new server
CFEngine Upgrade Plan
•

Replacement Method
•

Install CFEngine 3 as a new policy server

•

Select a CFEngine 2 host

•

Stop all CFEngine 2 processes or daemons on host

•

Convert policies, move them to the new policy server

•

Remove CFEngine 2 application from the host

•

Remove or move CFEngine 2 file system on the hosts

•

Install CFEngine 3 on the host

•

Bootstrap host to the policy server
CFEngine Upgrade Plan
•

Considerations: In Place vs. Replacement
•

Complexity of environment

•

Uptime Requirements or SLA

•

Effort and resources

•

Conversion effort: One time vs ongoing
CFEngine Policy Conversion
•

Additional Resources
•

Best practices guides
Upgrading from CFEngine 2 to 3

Additional Links
CFEngine 3 Reference Manual
CFEngine 3 Quick Start Guide

CFEngine 3 Concept Guide
CFEngine 3 Beginning Examples
CFEngine Special Topics
CFEngine 2 Reference Manual
Next Steps
• Learn More check out our documentation

• Read Learning CFEngine 3 by Diego Zamboni

• Join the conversation on our community help forum
https://groups.google.com/forum/?fromgroups&hl=en#!forum/help-cfengine

More Related Content

What's hot

Nagios Conference 2012 - Scott Wilkerson - Passive Monitoring Solutions For R...
Nagios Conference 2012 - Scott Wilkerson - Passive Monitoring Solutions For R...Nagios Conference 2012 - Scott Wilkerson - Passive Monitoring Solutions For R...
Nagios Conference 2012 - Scott Wilkerson - Passive Monitoring Solutions For R...
Nagios
 
Nagios Conference 2014 - Jim Prins - Passive Monitoring with Nagios
Nagios Conference 2014 - Jim Prins - Passive Monitoring with NagiosNagios Conference 2014 - Jim Prins - Passive Monitoring with Nagios
Nagios Conference 2014 - Jim Prins - Passive Monitoring with Nagios
Nagios
 
Mainframe Virtual User Group Summer 2013
Mainframe Virtual User Group Summer 2013Mainframe Virtual User Group Summer 2013
Mainframe Virtual User Group Summer 2013
Serena Software
 
XPDDS18: Real Time in XEN on ARM - Andrii Anisov, EPAM Systems Inc.
XPDDS18: Real Time in XEN on ARM - Andrii Anisov, EPAM Systems Inc.XPDDS18: Real Time in XEN on ARM - Andrii Anisov, EPAM Systems Inc.
XPDDS18: Real Time in XEN on ARM - Andrii Anisov, EPAM Systems Inc.
The Linux Foundation
 
XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...
XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...
XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...
The Linux Foundation
 
Nagios Conference 2011 - Mike Weber - Training: Reducing Nagios Server Load ...
Nagios Conference 2011 - Mike Weber - Training:  Reducing Nagios Server Load ...Nagios Conference 2011 - Mike Weber - Training:  Reducing Nagios Server Load ...
Nagios Conference 2011 - Mike Weber - Training: Reducing Nagios Server Load ...
Nagios
 
A ass
A assA ass
Network Configuration Manager Training - [Season 4] Part 1 - Configuration ba...
Network Configuration Manager Training - [Season 4] Part 1 - Configuration ba...Network Configuration Manager Training - [Season 4] Part 1 - Configuration ba...
Network Configuration Manager Training - [Season 4] Part 1 - Configuration ba...
ManageEngine, Zoho Corporation
 
PHP Rocketeer
PHP RocketeerPHP Rocketeer
PHP Rocketeer
Joshua Copeland
 
Lansa Development V12
Lansa Development V12Lansa Development V12
Lansa Development V12
thedonn57
 
BKK16-504 Running Linux in EL2 Virtualization
BKK16-504 Running Linux in EL2 VirtualizationBKK16-504 Running Linux in EL2 Virtualization
BKK16-504 Running Linux in EL2 Virtualization
Linaro
 
15 most valuable reports with CFEngine
15 most valuable reports with CFEngine15 most valuable reports with CFEngine
15 most valuable reports with CFEngine
CFEngine
 
OpenPOWER Application Optimization
OpenPOWER Application Optimization OpenPOWER Application Optimization
OpenPOWER Application Optimization
Ganesan Narayanasamy
 
Release Cycle Changes
Release Cycle ChangesRelease Cycle Changes
Release Cycle Changes
HPCC Systems
 
[NGINX Webinar Forum] Tune health check parameter to reduce app down time slide
[NGINX Webinar Forum] Tune health check parameter to reduce app down time slide[NGINX Webinar Forum] Tune health check parameter to reduce app down time slide
[NGINX Webinar Forum] Tune health check parameter to reduce app down time slide
Supachai Jaturaprom
 
Nagios Conference 2011 - Mike Guthrie - Distributed Monitoring With Nagios
Nagios Conference 2011 - Mike Guthrie - Distributed Monitoring With NagiosNagios Conference 2011 - Mike Guthrie - Distributed Monitoring With Nagios
Nagios Conference 2011 - Mike Guthrie - Distributed Monitoring With Nagios
Nagios
 
Powervc upgrade from_1.3.0.2_to_1.3.2.0
Powervc upgrade from_1.3.0.2_to_1.3.2.0Powervc upgrade from_1.3.0.2_to_1.3.2.0
Powervc upgrade from_1.3.0.2_to_1.3.2.0
Gobinath Panchavarnam
 
Perforce Setup
Perforce SetupPerforce Setup
Perforce Setup
imranbashir
 

What's hot (19)

Nagios Conference 2012 - Scott Wilkerson - Passive Monitoring Solutions For R...
Nagios Conference 2012 - Scott Wilkerson - Passive Monitoring Solutions For R...Nagios Conference 2012 - Scott Wilkerson - Passive Monitoring Solutions For R...
Nagios Conference 2012 - Scott Wilkerson - Passive Monitoring Solutions For R...
 
Nagios Conference 2014 - Jim Prins - Passive Monitoring with Nagios
Nagios Conference 2014 - Jim Prins - Passive Monitoring with NagiosNagios Conference 2014 - Jim Prins - Passive Monitoring with Nagios
Nagios Conference 2014 - Jim Prins - Passive Monitoring with Nagios
 
Mainframe Virtual User Group Summer 2013
Mainframe Virtual User Group Summer 2013Mainframe Virtual User Group Summer 2013
Mainframe Virtual User Group Summer 2013
 
XPDDS18: Real Time in XEN on ARM - Andrii Anisov, EPAM Systems Inc.
XPDDS18: Real Time in XEN on ARM - Andrii Anisov, EPAM Systems Inc.XPDDS18: Real Time in XEN on ARM - Andrii Anisov, EPAM Systems Inc.
XPDDS18: Real Time in XEN on ARM - Andrii Anisov, EPAM Systems Inc.
 
XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...
XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...
XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...
 
Nagios Conference 2011 - Mike Weber - Training: Reducing Nagios Server Load ...
Nagios Conference 2011 - Mike Weber - Training:  Reducing Nagios Server Load ...Nagios Conference 2011 - Mike Weber - Training:  Reducing Nagios Server Load ...
Nagios Conference 2011 - Mike Weber - Training: Reducing Nagios Server Load ...
 
A ass
A assA ass
A ass
 
Network Configuration Manager Training - [Season 4] Part 1 - Configuration ba...
Network Configuration Manager Training - [Season 4] Part 1 - Configuration ba...Network Configuration Manager Training - [Season 4] Part 1 - Configuration ba...
Network Configuration Manager Training - [Season 4] Part 1 - Configuration ba...
 
PHP Rocketeer
PHP RocketeerPHP Rocketeer
PHP Rocketeer
 
Lansa Development V12
Lansa Development V12Lansa Development V12
Lansa Development V12
 
BKK16-504 Running Linux in EL2 Virtualization
BKK16-504 Running Linux in EL2 VirtualizationBKK16-504 Running Linux in EL2 Virtualization
BKK16-504 Running Linux in EL2 Virtualization
 
15 most valuable reports with CFEngine
15 most valuable reports with CFEngine15 most valuable reports with CFEngine
15 most valuable reports with CFEngine
 
OpenPOWER Application Optimization
OpenPOWER Application Optimization OpenPOWER Application Optimization
OpenPOWER Application Optimization
 
Release Cycle Changes
Release Cycle ChangesRelease Cycle Changes
Release Cycle Changes
 
[NGINX Webinar Forum] Tune health check parameter to reduce app down time slide
[NGINX Webinar Forum] Tune health check parameter to reduce app down time slide[NGINX Webinar Forum] Tune health check parameter to reduce app down time slide
[NGINX Webinar Forum] Tune health check parameter to reduce app down time slide
 
Nagios Conference 2011 - Mike Guthrie - Distributed Monitoring With Nagios
Nagios Conference 2011 - Mike Guthrie - Distributed Monitoring With NagiosNagios Conference 2011 - Mike Guthrie - Distributed Monitoring With Nagios
Nagios Conference 2011 - Mike Guthrie - Distributed Monitoring With Nagios
 
Ap7181 cli guide
Ap7181 cli guideAp7181 cli guide
Ap7181 cli guide
 
Powervc upgrade from_1.3.0.2_to_1.3.2.0
Powervc upgrade from_1.3.0.2_to_1.3.2.0Powervc upgrade from_1.3.0.2_to_1.3.2.0
Powervc upgrade from_1.3.0.2_to_1.3.2.0
 
Perforce Setup
Perforce SetupPerforce Setup
Perforce Setup
 

Similar to Upgrading from CFEngine2 to CFEngine3 - Webinar Slides

Cfengine presentation at the RMLL
Cfengine presentation at the RMLLCfengine presentation at the RMLL
Cfengine presentation at the RMLL
RUDDER
 
Getting started with CFEngine - Webinar
Getting started with CFEngine - WebinarGetting started with CFEngine - Webinar
Getting started with CFEngine - Webinar
CFEngine
 
Config Management Camp 2015 - How to Deploy CFEngine in the Open Internet
Config Management Camp 2015 - How to Deploy CFEngine in the Open InternetConfig Management Camp 2015 - How to Deploy CFEngine in the Open Internet
Config Management Camp 2015 - How to Deploy CFEngine in the Open Internet
CFEngine
 
Getting Started With CFEngine - Updated Version
Getting Started With CFEngine - Updated VersionGetting Started With CFEngine - Updated Version
Getting Started With CFEngine - Updated Version
CFEngine
 
Symfony 2 under control
Symfony 2 under controlSymfony 2 under control
Symfony 2 under control
Max Romanovsky
 
OSGi Community Event 2010 - OSGi Technical Update
OSGi Community Event 2010 - OSGi Technical UpdateOSGi Community Event 2010 - OSGi Technical Update
OSGi Community Event 2010 - OSGi Technical Update
mfrancis
 
Setting up your Multi Engine Environment - Apache Railo and ColdFusion
Setting up your Multi Engine Environment - Apache Railo and ColdFusionSetting up your Multi Engine Environment - Apache Railo and ColdFusion
Setting up your Multi Engine Environment - Apache Railo and ColdFusion
Gavin Pickin
 
Cfg Mgmtcamp 2015 - Releases
Cfg Mgmtcamp 2015 - ReleasesCfg Mgmtcamp 2015 - Releases
Cfg Mgmtcamp 2015 - Releases
CFEngine
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
C4Media
 
It gilde 20150209
It gilde 20150209It gilde 20150209
It gilde 20150209
Martin Simons
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
php-user-group-minsk
 
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Max Romanovsky
 
Releases - CFEngine presentation - Configuration Management Camp 2015
Releases - CFEngine presentation - Configuration Management Camp 2015Releases - CFEngine presentation - Configuration Management Camp 2015
Releases - CFEngine presentation - Configuration Management Camp 2015
kacfengine
 
Brad Wood 5 command box modules you should be using
Brad Wood   5 command box modules you should be usingBrad Wood   5 command box modules you should be using
Brad Wood 5 command box modules you should be using
Ortus Solutions, Corp
 
Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]
Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]
Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]
Ortus Solutions, Corp
 
CNIT 152 10 Enterprise Service
CNIT 152 10 Enterprise ServiceCNIT 152 10 Enterprise Service
CNIT 152 10 Enterprise Service
Sam Bowne
 
Tutorial contributing to nf-core
Tutorial contributing to nf-coreTutorial contributing to nf-core
Tutorial contributing to nf-core
Gisela Gabernet
 
Nginx conference 2015
Nginx conference 2015Nginx conference 2015
Nginx conference 2015
ING-IT
 
eBPF Basics
eBPF BasicseBPF Basics
eBPF Basics
Michael Kehoe
 
Development of a Cisco ACI device package for NGINX as a Load-Balancer
Development of a Cisco ACI device package for NGINX as a Load-BalancerDevelopment of a Cisco ACI device package for NGINX as a Load-Balancer
Development of a Cisco ACI device package for NGINX as a Load-Balancer
Fabrice Servais
 

Similar to Upgrading from CFEngine2 to CFEngine3 - Webinar Slides (20)

Cfengine presentation at the RMLL
Cfengine presentation at the RMLLCfengine presentation at the RMLL
Cfengine presentation at the RMLL
 
Getting started with CFEngine - Webinar
Getting started with CFEngine - WebinarGetting started with CFEngine - Webinar
Getting started with CFEngine - Webinar
 
Config Management Camp 2015 - How to Deploy CFEngine in the Open Internet
Config Management Camp 2015 - How to Deploy CFEngine in the Open InternetConfig Management Camp 2015 - How to Deploy CFEngine in the Open Internet
Config Management Camp 2015 - How to Deploy CFEngine in the Open Internet
 
Getting Started With CFEngine - Updated Version
Getting Started With CFEngine - Updated VersionGetting Started With CFEngine - Updated Version
Getting Started With CFEngine - Updated Version
 
Symfony 2 under control
Symfony 2 under controlSymfony 2 under control
Symfony 2 under control
 
OSGi Community Event 2010 - OSGi Technical Update
OSGi Community Event 2010 - OSGi Technical UpdateOSGi Community Event 2010 - OSGi Technical Update
OSGi Community Event 2010 - OSGi Technical Update
 
Setting up your Multi Engine Environment - Apache Railo and ColdFusion
Setting up your Multi Engine Environment - Apache Railo and ColdFusionSetting up your Multi Engine Environment - Apache Railo and ColdFusion
Setting up your Multi Engine Environment - Apache Railo and ColdFusion
 
Cfg Mgmtcamp 2015 - Releases
Cfg Mgmtcamp 2015 - ReleasesCfg Mgmtcamp 2015 - Releases
Cfg Mgmtcamp 2015 - Releases
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
It gilde 20150209
It gilde 20150209It gilde 20150209
It gilde 20150209
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
 
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...
 
Releases - CFEngine presentation - Configuration Management Camp 2015
Releases - CFEngine presentation - Configuration Management Camp 2015Releases - CFEngine presentation - Configuration Management Camp 2015
Releases - CFEngine presentation - Configuration Management Camp 2015
 
Brad Wood 5 command box modules you should be using
Brad Wood   5 command box modules you should be usingBrad Wood   5 command box modules you should be using
Brad Wood 5 command box modules you should be using
 
Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]
Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]
Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]
 
CNIT 152 10 Enterprise Service
CNIT 152 10 Enterprise ServiceCNIT 152 10 Enterprise Service
CNIT 152 10 Enterprise Service
 
Tutorial contributing to nf-core
Tutorial contributing to nf-coreTutorial contributing to nf-core
Tutorial contributing to nf-core
 
Nginx conference 2015
Nginx conference 2015Nginx conference 2015
Nginx conference 2015
 
eBPF Basics
eBPF BasicseBPF Basics
eBPF Basics
 
Development of a Cisco ACI device package for NGINX as a Load-Balancer
Development of a Cisco ACI device package for NGINX as a Load-BalancerDevelopment of a Cisco ACI device package for NGINX as a Load-Balancer
Development of a Cisco ACI device package for NGINX as a Load-Balancer
 

Recently uploaded

GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 

Recently uploaded (20)

GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 

Upgrading from CFEngine2 to CFEngine3 - Webinar Slides

  • 1. Upgrading from CFEngine2 to CFEngine 3
  • 2. Agenda • The Benefits of Upgrading • What’s New in CFEngine 3 • Promise Theory and How It Drives CFEngine 3 • Planning your Upgrade • Policy Conversion Methods • System Upgrade Methods • Q&A
  • 3. Why Upgrade? • Simplifies and extends CFEngine 2 • More consistent in syntax and behavior • Does not require "under the hood" programming to extend the language – up to 10x less code • Does not hard-code configuration details • Enables greater agility; 5 minute update default • Provides tools for debugging and testing • Adds native support and integration
  • 4. What’s new in CFEngine 3? • Native Support and Integration • Standard Integration • Package Management • Enhanced Service Management • Database • Virtualization • Enterprise Extensions • Windows support • LDAP and Active Directory • Design Center • GUI Reporting
  • 5. What’s New in CFEngine 3? • Language Enhancements • Bodies and Bundles body common control { bundlesequence => { "test" }; } bundle agent test { reports: cfengine_3:: "Hello world!"; }
  • 6. What’s New in CFEngine 3? • Language Enhancements • Standard Library /var/cfengine/inputs/cfengine_stdlib.cf • Arrays and Lists • Pattern matching and Iteration • Comments and Handles
  • 7. CFEngine Enterprise - Mission Portal GUI • Features • Auditing and Compliance • Monitoring • Reporting • REST API • Design Center • Inventory management
  • 8. Promise Theory and CFEngine 3 • Promise Theory Voluntary cooperation between individual, autonomous actors or agents who publish their intentions to one another in the form of promises -- Mark Burgess
  • 9. Promise Theory - Basic Concepts • Promise Theory: Applied • Promises are fundamental statements Set perms on /etc/passwd Use latest Apache Package • A policy is a collection of promises • Desired state is maintained through policies • Updates are pulled autonomously
  • 10. Notable Differences – CFEngine 3 • Connections • Trust relationships are established by design • Bootstrapping – The process of binding a client to the hub or policy server • Key exchange – managed by CF3 • Policy Organization • Policies and bundle references are located on all bootstrapped systems • Managed by the promises.cf
  • 11. CFEngine 2 Upgrade Preparation
  • 12. CFEngine 2 Upgrade Preparation • Identify peer systems • Consult documentation • From Policy Server command line: cfshow -s IP + 192.168.1.101 192.168.1.101 [Tue Jan 23 16:13] not seen for (6.42) hrs IP - 192.168.1.101 192.168.1.101 [Tue Jan 23 16:13] not seen for (6.42) hrs cat <path>/cfrun.hosts • When all else fails, scripting is your friend
  • 13. CFEngine 2 Upgrade Preparation • Catalog Existing Policies • Where are they? • Source control? • Local inputs? • Local hosts?
  • 14. CFEngine 2 Policy Conversion • Methods • Functional translation • What problem does it solve? • Direct translation • Line for line • Be flexible! • Let the policy be your guide
  • 15. CFEngine 2 Policy Conversion • Functional Translation Method • Holistic viewpoint – the Big Picture approach • Opportunity for improvement • Recommended conversion strategy
  • 16. CFEngine 2 Policy Conversion • Direct Translation Method • Direct language translation • Translation guide: http://cfengine.com/manuals/cf3-upgrade.html • Time consuming • Missed opportunities
  • 17. CFEngine 2 Policy Conversion: CF2 Processes Policy processes: "inetd" signal=hup "bootp" signal=kill exclude=rpc.bootparamd "cfservd" restart "/usr/local/sbin/cfservd" useshell=false # matches=>6 warn number of matches is greater than or equal to 6 # matches=1 warn if not exactly 1 matching process # matches=<2 warn if there are less than or equal to 2 matching processes
  • 18. CFEngine 2 Direct Conversion: CF3 Processes Policy processes: "inetd" signals => { "hup" }; "bootp" signals => { "kill" }, process_select => exclude_procs(".*rpc.bootparamd.*"); "cf-serverd" restart_class => "start_cfserverd"; # process_count => check_range(cfserv,6,inf); warn number of matches is >= equal to 6 # process_count => check_range(cfserv,1,1); warn if not exactly 1 matching process # process_count => check_range(cfserv,0,2); warn if there are =< to 2 matching processes commands: start_cfserverd:: "/usr/local/sbin/cf-serverd"; reports: cfserv_out_of_range:: "cf-serverd is out of control!!";
  • 19. CFEngine 2 Functional Conversion: CF3 Processes Policy vars: "daemons" slist => { "cf-monitord", "cf-serverd", "cf-execd" }; processes: "named" restart_class => "restart_named"; "$(daemons)" restart_class => canonify("start_$(component)"); commands: "/bin/echo /var/cfengine/bin/$(component)" ifvarclass => canonify("start_$(component)"); restart_named:: "/local/sbin/named -u dns" action => inform;
  • 20. CFEngine 2 Functional Conversion: CF2 File Ops Policy This CFEngine 2 Policy: cf2_file_op.cf control: domain = ( mydomain.com ) serverip = ( 172.16.100.129 ) #server ip address master = ( /var/cfengine/inputs ) actionsequence = ( copy files links editfiles ) copy: /master/cfengine/inputs server=$(serverip) dest=$(master) recurse=inf trustkey=on files: any:: /tmp/cfengine_is_good mode=0644 owner=root group=root action=touch links: any:: /tmp/how_is_cfengine -> /tmp/cfengine_is_good editfiles: cfengine_2:: { /etc/motd AppendIfNoSuchLine “Running CFEngine" }
  • 21. CFEngine 2 Functional Conversion: CF3 File Ops Bundle Converts to this CFEngine 3 Bundle: bundle agent old_cfagent { files: "/tmp/cfengine_is_good" perms => mog("644","root","root"); "/tmp/how_is_cfengine" link_from => ln_s("/tmp/cfengine_is_good"); cfengine_3:: "/etc/motd" edit_line => append_if_no_lines(“Running CFEngine"); }
  • 22. CFEngine 2 Policy Conversion • Tips and Tricks • Install CFEngine 3 in a test environment • Safety first • Start small • How would you eat an elephant? • Focus on the similarities • The language may be different, but the core concepts remain
  • 23. CFEngine 2 Policy Conversion • Tips and Tricks • Convert CF2 policies to bundles; not standalone files • CFEngine 3 is a different animal • Client connection and control activities: Handled • Part of the initial bootstrap process • The promises.cf file controls automated activity • Bundles referenced in the bundlesequence stanza • Input bundle files are referenced in the inputs stanza
  • 24. CFEngine Conversion Tool • Learning tool or killer utility? • Learning tool • Requires cleanup; but helpful in learning the language • Location: https://github.com/cfengine/cf22cf3 • Zip file containing code: https://github.com/cfengine/cf22cf3/archive/master.zip • May also clone via HTTPS, SSH, or Subversion.
  • 25. CFEngine Conversion Tool - Setup • Pre-requisite and Download Instructions • This example uses the CentOS 5 distribution • Pre-requisite work: yum groupinstall "Development tools" yum install db4-devel yum install openssl-devel • Download from GIT: https://github.com/cfengine/cf22cf3| • Download cf22cf3-master.zip, or if you have a GIT/SVN repo set up locally, clone it
  • 26. CFEngine Conversion Tool - Setup • Manual Compilation • Create a compilation area on a local system mkdir /sandbox • Copy zip to compilation area and unpack cp cf22cf3-master.zip /sandbox cd /sandbox unzip cf22cf3-master.zip cd cf22cf3-master chmod 755 configure
  • 27. CFEngine Conversion Tool - Setup • Compilation instructions • Compile ./configure make make install • Binary Directory: /usr/local/sbin • Examples Directory: Binary: /usr/local/share/cf23convert /usr/local/sbin/cfconvert
  • 28. CFEngine Conversion Tool - Usage • Usage Cfengine Conversion Utility 1.0.0 Free Software Foundation 1994Donated by Mark Burgess, Oslo University College, Norway Options: --file --variables --server --bundle (-f) (-v) (-s) (-b) Debug levels: 1=parsing, 2=running, 3=summary, 4=expression eval Bug reports to bug-cfengine@cfengine.org General help to help-cfengine@cfengine.org Info & fixes at http://www.cfengine.org
  • 29. CFEngine Conversion Tool - Example • Convert CFE2 policy file to a CFE3 bundle : • Create a CFEngine 2 policy file in /tmp ( We’ll use the policy example in slide 21: cf2_file_op.cf ) • Convert to a bundle and pipe the bundle to stdout cfconvert -f /tmp/cf2_file_op.cf -b • Convert to a bundle and pipe to a file ( Save the converted file as cf3_file_op.cf ) cfconvert -f /tmp/cf2_file_op.cf -b > /tmp/cf3_file_op.cf
  • 30. CFEngine 2 Upgrade Plan • In Place Upgrade Overview • CF2 and CF3 designed to be interoperable • Replace CF2 Policies at your pace
  • 31. CFEngine Upgrade Plan • Upgrade Notes: • Replace cfexecd with CFEngine 3's cf-execd • Access control remains untouched • Runs cf-agent • Sample inputs files contain integration promises • Launched automatically • Changes crontab
  • 32. CFEngine Upgrade Plan • In Place Upgrade Steps • Backup CFEngine 2 policies and inputs repo • Install the CFEngine 3 software on a local host rpm -ivh cfengine-community-3.2.1-.el5.x86_64.rpm • Copy newly installed /var/cfengine/inputs files to your CF2 master update repository • Remove any rules to reinstall CFEngine 2 or add cfexecd or cfagent to crontabs • Remove cfexecd from start up processes chkconfig cfexecd off chkconfig --del cfexecd
  • 33. CFEngine Upgrade Plan • In Place Upgrade Steps • Change directory to the inputs directory cd /var/cfengine/inputs • Edit the update.cf file to point to your CF2 master update repository • Set the email options for the executor in promises.cf. • As root, run: cf-agent --bootstrap • If all went well, you are now running CFEngine 3. To bootstrap to a policy server, run: cf-agent --bootstrap <policy server IP>
  • 34. CFEngine Upgrade Plan • In Place Upgrade Steps • Remove all rules or policies that are capable of activating CFEngine 2 components • Convert cfservd.conf into a server bundle • Place a reference to this bundle in promises.cf • Remove all rules to run cfservd • Replace them with rules to run cf-serverd • Add converted CFEngine 2 policies or create new CFEngine 3 policies
  • 35. CFEngine 2 Upgrade Plan • Replacement Model • CFEngine 3 installed on separate server • Converted hosts bootstrap to new server
  • 36. CFEngine Upgrade Plan • Replacement Method • Install CFEngine 3 as a new policy server • Select a CFEngine 2 host • Stop all CFEngine 2 processes or daemons on host • Convert policies, move them to the new policy server • Remove CFEngine 2 application from the host • Remove or move CFEngine 2 file system on the hosts • Install CFEngine 3 on the host • Bootstrap host to the policy server
  • 37. CFEngine Upgrade Plan • Considerations: In Place vs. Replacement • Complexity of environment • Uptime Requirements or SLA • Effort and resources • Conversion effort: One time vs ongoing
  • 38. CFEngine Policy Conversion • Additional Resources • Best practices guides Upgrading from CFEngine 2 to 3 Additional Links CFEngine 3 Reference Manual CFEngine 3 Quick Start Guide CFEngine 3 Concept Guide CFEngine 3 Beginning Examples CFEngine Special Topics CFEngine 2 Reference Manual
  • 39. Next Steps • Learn More check out our documentation • Read Learning CFEngine 3 by Diego Zamboni • Join the conversation on our community help forum https://groups.google.com/forum/?fromgroups&hl=en#!forum/help-cfengine

Editor's Notes

  1. Why this makes CFEngine better than other tools in the market?GPS analogy, or mashed potatoes analogy
  2. Why this makes CFEngine better than other tools in the market?GPS analogy, or mashed potatoes analogy
  3. *
  4. *
  5. *
  6. *
  7. *