We're going to assume that we have $N$ assets in our portfolio with weights $w$ and prices $x$. The variance of your portfolio is given by:
\begin{equation}
V\left( w'x \right) = w' E\left((x-E(X))(x-E(x))'\right) w = \sum_{i,j=1}^N w_i w_j Cov(x_i, x_j).
\end{equation}
So, the contribution of one asset is given by:
\begin{equation}
s_i := \frac{w_i^2 V(x_i) + \sum_{j=1, j \neq i}^N w_iw_j Cov(x_i,x_j) }{\sum_{i,j=1}^N w_i w_j Cov(x_i, x_j)}.
\end{equation}
So, your problem of equalizing the variance contribution is to find a weight vector so that all the $(s_i)_{i=1}^N$ are equal which implies
\begin{align}
&w_i^2 V(x_i) + \sum_{k=1, k \neq i}^N w_i w_k Cov(x_i,x_k) = w_j^2 V(x_j) + \sum_{k=1, k \neq j}^N w_j w_k Cov(x_j, x_k)
\end{align}
Now, this is a system of nonlinear equations. To solve it, you need to choose a normalization. Say, $w_1 = 1$ and then you just have to remember that all other weights are expressed as $w_i^* = w_i/w_1$, i.e. in units of $w_1$. Of course, without the covariances, the solution would be simple:
\begin{equation}
w_i = \sqrt{\frac{V(x_1)}{V(x_i)}} w_1
\end{equation}
so you could use this as a starting value for a numerical solution algorithm.
Once you have code to do this, it becomes a matter of how do you estimate the covariance matrix. Several problems emerge: (1) depending on the reasons behind your equalizing strategy, you might want to use something else than the square loss of maximum likelihood and the like; (2) the conditional covariance matrix might evolve through time; (3) outside of a Gaussian world, higher moments do matter and the intuition you have about volatility (that variance is subadditive) doesn't apply; (4) even if you tweak your problem to take all of this explicitly into account, you will have to remember you are working from models and not from the data generating process.