:_mod-docs-content-type: CONCEPT
[id="comparing-configuration-files-between-deployments_{context}"]

= Comparing configuration files between deployments

[role="_abstract"]
To help you manage the configuration for your {OpenStackPreviousInstaller} and {rhos_prev_long} ({OpenStackShort}) services, you can compare the configuration files between your {OpenStackPreviousInstaller} deployment and the {rhos_long} cloud by using the os-diff tool.
ifeval::["{build_variant}" == "ospdo"]
[NOTE]
 Os-diff does not currently support director Operator.
endif::[]

.Prerequisites

* Golang is installed and configured on your environment:
+
----
dnf install -y golang-github-openstack-k8s-operators-os-diff
----

.Procedure

. Configure the `/etc/os-diff/os-diff.cfg` file and the `/etc/os-diff/ssh.config` file according to your environment. To allow os-diff to connect to your clouds and pull files from the services that you describe in the `config.yaml` file, you must set the following options in the `os-diff.cfg` file:
+
[source,yaml]
[subs=+quotes]
----
[Default]

local_config_dir=/tmp/
service_config_file=config.yaml

[Tripleo]

ssh_cmd=ssh -F ssh.config <1>
director_host=standalone <2>
container_engine=podman
connection=ssh
remote_config_path=/tmp/tripleo
local_config_path=/tmp/

[Openshift]

ocp_local_config_path=/tmp/ocp
connection=local
ssh_cmd=""
----
+
<1> Instructs os-diff to access your {OpenStackPreviousInstaller} host through SSH. The default value is `ssh -F ssh.config`. However, you can set the value without an ssh.config file, for example, `ssh -i /home/user/.ssh/id_rsa stack@my.undercloud.local`.
<2> The host to use to access your cloud, and the podman/docker binary is installed and allowed to interact with the running containers. You can leave this key blank.

. If you use a host file to connect to your cloud, configure the `ssh.config` file to allow os-diff to access your {OpenStackShort} environment, for example:
+
[source,yaml]
[subs=+quotes]
----
Host *
    IdentitiesOnly yes

Host virthost
    Hostname virthost
    IdentityFile ~/.ssh/id_rsa
    User root
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null


Host standalone
    Hostname standalone
ifeval::["{build}" != "downstream"]
    IdentityFile ~/install_yamls/out/edpm/ansibleee-ssh-key-id_rsa
endif::[]
ifeval::["{build}" == "downstream"]
    IdentityFile <path to SSH key>
endif::[]
    User root
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null

Host crc
    Hostname crc
    IdentityFile ~/.ssh/id_rsa
    User stack
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null
----
+
* Replace `<path to SSH key>` with the path to your SSH key. You must provide a value for `IdentityFile` to get full working access to your {OpenStackShort} environment.

. If you use an inventory file to connect to your cloud, generate the `ssh.config` file from your Ansible inventory, for example, `tripleo-ansible-inventory.yaml` file:
+
----
$ os-diff configure -i tripleo-ansible-inventory.yaml -o ssh.config --yaml
----

.Verification

* Test your connection:
+
----
$ ssh -F ssh.config standalone
----
